STL

Posted streamazure

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STL相关的知识,希望对你有一定的参考价值。

map.count()

map.count(Key),在map中检索索引Key,若其存在,返回true,否则返回false

注意仅能检索索引,不能检索值

#include<map>
map<int,int> m;

if(m.count(key)){...;}
#include<map>
#include<iostream>
using namespace std;

int main()
{
    map<char,int> m;
    m[‘a‘] = 1;
    m[‘b‘] = 2;
    if (m.count(‘a‘)) cout << m[‘a‘] << endl;
    if (m.count(‘c‘)) cout << m[‘c‘] << endl;
    if (m.count (1) ) cout<<3<<endl;
    return 0;
}
//仅能执行第一条if语句,打印结果为1

inserter()

与其它函数结合使用,使元素插入到该函数参数迭代器所指向的元素之前

#include<iterator>

iterator(a,a.begin());
//参数分别为 容器名,指向给定容器的迭代器
//返回值为迭代器

set_union()

求并集操作

可以将两个容器a,b合并到一个容器c中,并自动去重

容器可以是集合也可以是数组等。

注意:容器a,b必须有序

#include<iterator>
#include<algorithm>

set_union(a.begin(),a.end(),b.begin(),b.end(),inserter(c,c.begin()));
#include<iterator>
#include<algorithm>
#include<set>
#include<iostream>
using namespace std;

int main()
{
    set<int> a;
    set<int> b;
    set<int> c;
    for (int i = 1;i <= 5;i++) a.insert(i);
    //a={1,2,3,4,5}
    for (int i = 3;i <= 7;i++) b.insert(i);
    //b={3,4,5,6,7}
    set_union(a.begin(), a.end(), b.begin(), b.end(), inserter(c, c.begin()));
    set<int>::iterator it;
    for (it = c.begin();it != c.end();it++) {
        cout << *it << " ";
    }
    //c={1,2,3,4,5,6,7}
    return 0;
}

打印容器c,结果为1 2 3 4 5 6 7


set_intersection()

求交集操作

基本同set_union()

#include<iterator>
#include<algorithm>

set_intersection(a.begin(),a.end(),b.begin(),b.end(),inserter(c,c.begin()));
#include<iterator>
#include<algorithm>
#include<set>
#include<iostream>
using namespace std;

int main()
{
    set<int> a;
    set<int> b;
    set<int> c;
    for (int i = 1;i <= 5;i++) a.insert(i);
    //a={1,2,3,4,5}
    for (int i = 3;i <= 7;i++) b.insert(i);
    //b={3,4,5,6,7}
    set_intersection(a.begin(), a.end(), b.begin(), b.end(), inserter(c, c.begin()));
    set<int>::iterator it;
    for (it = c.begin();it != c.end();it++) {
        cout << *it << " ";
    }
    //c={3,4,5}
    return 0;
}

打印容器c,结果为3 4 5

以上是关于STL的主要内容,如果未能解决你的问题,请参考以下文章

STL容器自定义内存分配器

STL容器自定义内存分配器

《STL源代码剖析》---stl_deque.h阅读笔记

《STL源代码剖析》---stl_deque.h阅读笔记

STL - 以下代码有啥问题?

STL源代码剖析——基本算法stl_algobase.h