사용자 정의 정렬 및 벡터 C의 ++ STL에

우선 순위 큐 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 异常

벡터 용기가 또한 적합하다 반복자

추천

출처www.cnblogs.com/gzr2018/p/11725498.html