우선 순위 큐 priority_queue
우선 순위 대기열 일반 문구
//队列头部值最大,大顶堆
priority_queue<int, vector<int>, greater<> >pq;
//小大顶堆
priority_queue<int, vector<int>, less<> >pq;
사용자 정의 데이터 정렬
두 개의 인수와 정의 () 연산자는 내부 쓰기> 크고 종류의 반대로 작은에서 실제로!
문언 :
struct node
{
int to,cost;
};
struct cmp
{
bool operator() (const node &a,const node &b)
{
return a.cost > b.cost;
}
};
priority_queue<node,vector<node>,cmp>priq;
이 글 :
struct node
{
int to,cost;
node(int x1,int x2)
{
to=x1;
cost = x2;
}
friend bool operator<(const node &a , const node &b)
{
return a.cost>b.cost; // ascending sort
}
};
priority_queue<node>priq;
우선 순위보다 일반적으로 비어있는 기능 래퍼 큐 (), 크기 (), 팝업 (), 최고 (), 푸시 ()
세트 MULTISET
다음은 집합을 설명, MULTISET 사용 유사한
일반적인 패턴
set<int>se
맞춤 주문
struct mynode {
int end, id;
};
struct rules
{
bool operator()(const mynode& a, const mynode& b)
{
return a.end < b.end;
}
};
set<mynode,rules> se;
헤드와 꼬리 (즉, 가장 값이 동적으로 업데이트 용기를 제거 할 수있는 지원의 일종), 반복자 지원 삭제할 삭제하도록 설정 될 수
물론 반복자 소자를 통해 임의의 위치를 삭제
//一些用法
se.erase(mset.begin());//删除第一个
mset.erase(--mset.end());//删除最后一个
vec.push_back((*(--mset.end())).id);//取出最后一个元素的某个部分
(), 빈 (크기를 설정하고 MULTISET의 유용성 또는 큰뿐만 아니라 일반적인 삽입 (), 삭제 () (또는 주소 값) ) 등
을 통해 지원을 반복합니다.
벡터
물론 벡터는 위의 같은 나무의 동적 균형을 유지할 수없는 배열, 벡터이다
덱을 소개하는 벡터로 사용 여기를,뿐만 아니라 내장 함수의 일부 덜 일반적인 벡터
// 任意位置插入一个元素
vector<int>::iterator it = vec.begin();
vec.insert(it, 2);
//任意位置插入 n 个相同元素
vec.insert(iterator it, int n, const T& x);
//插入另一个向量的 [forst,last] 间的数据
vec.insert(iterator it, iterator first, iterator last);
vec.resize(10)//会分配 10 个 0 给vec,相当于 push_back(0) 10 次。
push_back()//后面插入
pop_back()//弹出最后一个元素
back()//取出最后一个元素
vec.front();//取出第一个
vec.erase(iterator it);//任意位置删除一个元素
vec.erase(iterator first, iterator last);//删除 [first,last] 之间的元素
at 方法访问:vec.at(1); // 和下标访问区别就是 at 会检查是否越界,是则抛出 out of range 异常
벡터 용기가 또한 적합하다 반복자