C++ STL标准模板库

pair

位于头文件< iostream>中用来表示一个二元组或元素对
2.1 使用pair
定义一个pair对象表示一个平面面坐标点:

pair<double, double> p;
cin >> p.first >> p.second;

pair模版类需要两个参数:首元素的数据类型和尾元素的数据类型。pair模版类对象有两个成
员:first和second,分别表示首元素和尾元素。 向上述q中存入数据需要用到q.make_pair(first,second);
对pair排序默认先为first,后second,如果需要先对second排序,需要设一个比较函数

int cmp(pair<int ,int > a,pair<int,int>b){
    return a.second > b.second;
}

set

set模版类的定义在头文件中,表示一个集合。数据存入其中后会自动去重,自带排序。虽然set自动去重,但是仍然可以用count()求出某一点重复数据的个数
3.1.2 使用set

set<int> s;
set<double> ss;

set的基本操作:
s.begin()                               //返回指向第一个元素的迭代器
s.clear()                               //清除所有元素
s.count()                               //返回某个值元素的个数
s.empty()                               //如果集合为空,返回true(真)
s.end()                                 //返回指向最后一个元素之后的迭代器,不是最后一个元素
s.erase()                               //删除集合中的元素
s.find()                                //返回一个指向被查找到元素的迭代器
s.insert()                              //在集合中插入元素
s.lower_bound()                         //返回指向大于(或等于)某值的第一个元素的迭代器
s.size()                                //集合中元素的数目
s.swap()                                //交换两个集合变量
s.upper_bound()                         //返回大于某个值元素的迭代器

vector

vector的基本操作:

#include<vector>
vector <int> s;
s[i]            // 直接以下标方式访问容器中的元素
s.front()       // 返回首元素
s.back()        // 返回尾元素
s.push_back(x)  // 向表尾插入元素x
s.size()        // 返回表长
s.empty()       // 表为空时,返回真,否则返回假
s.pop_back()    // 删除表尾元素
s.begin()       // 返回指向首元素的随机存取迭代器
s.end()         // 返回指向尾元素的下一个位置的随机存取迭代器
s.clear()       // 删除容器中的所有元素
s.swap(v)       // 将s与另一个vector对象进行交换

string

string 可以赋值给char*,但是char*不能赋值给string
string使用:

#include<string>
string s;

cin >> s;
s += "sada";
s -= "da";
if(s[0] == 'a')
    cout <<"s[0] == a"<<endll

stack

#include<stack>

stack<int> s;

a = 1;
s.push(1) //入栈;
s.pop()   //出栈;
int Top = s.top() //访问栈顶
if(s.empty()==0)    //判空,为空时返回1
    cout << “非空” <<endl;
cout << s.size() <<endl;//访问栈中元素个数;

queue

点击进入queue


map

map为一个映射,相当于python中的字典

可以将map看作是由Key标识元素的元素集合,这类容器器也被称为“关联容器”,可以通过一个Key值来快速决定一个元素,因此非常适合于需要按照Key值查找元素的容器

#include <map>

map <int,int >m;
m[key] = value;// [key]操作是map很有特色的操作,如果在map中存在键值为
key的元素对, 则返回该元素对的值域部分,否则将会创建一个键值为key的元素对,值域为默认值。所以可以用该操作向map中插入元素对或修改已经存在的元素对的值域部分。

int i = m[key];
// 要注意的是,当与该键值相匹配的元素对不不存在时,会创建键值为key(当另一个元素是整形时,m[key]=0)的元素对。
map<string, int>::iterator it = m.find(key); // 如果map中存在与key相匹配的键值时,find操作将返
回指向该元素对的迭代器,否则,返回的迭代器等于map的end()(参⻅见vector中提到的begin()和end()
操作)。
//c11中可以用auto it = m.find(key);

m.erase(key);
// 删除与指定key键值相匹配的元素对,并返回被删除的元素的个数。
m.size();// 返回元素个数
m.empty();// 判断是否为空
m.clear();// 清空所有元素

转载注明出处

猜你喜欢

转载自blog.csdn.net/bestsort/article/details/81240387