c++的vector和其他STL

抄自c++ primer
vector是一个类模板
vector v2 = v1
vector v2(v1)
上面这两种写法等价,v2是包含v1所有元素的副本

二维vector的声明:
vector <vector(T)> v;

初始化
vector<string> v1{"a","an","the"};
创建10个1
vector<int> v2(10,1)
花括号和括号是不等价的

vector<int> v1(10)  //有10个默认的0
vector<int> v(10,1) //有10个值为1的元素
vector<int> v1{10}  //有个值为0的元素
//如果花括号里面值和vector<T>的T不同,编译器用尝试用默认值初始化
vector<string> v2{10,"hi"}
vector<string> v3(10,"hi")

遍历:

for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
		cout << *it << endl;
}

常用的api

v.size() 获取v的大小
v.push_back(t) 末尾添加一个元素
v.empty() 判断v是否为空
vector不能用下标添加元素,插入元素用.insert();
v.insert(v.begin() + 1, 3);

其他STL

栈(后进先出):

stack<int> mystack;
s.top();           //返回栈顶元素, 但不删除该元素
s.pop();           //弹出栈顶元素, 但不返回其值
s.push();          //添加元素到栈顶

队列(先进先出):

q.back()          //返回最后一个元素
q.front()         //返回第一个元素
q.push()          //队尾插入元素
q.pop()           //队头移除一个元素

Map:

unordered_map<char,char> myMap={
            //右-左
            {')','('},
            {']','['},
            {'}','{'}
        };
map<string, int> myMap;
myMap.insert(pair<string,int>("hello",1) );
myMap.insert(pair<string, int>("world", 2));
myMap.insert(pair<string, int>("you", 3));
myMap.erase("hello");
//遍历map 使用迭代器
for (map<string, int>::iterator it = myMap.begin(); it != myMap.end(); it++) {
		cout << "key=" << it->first << " value=" << it->second << endl;
}

map<char, char> m = {
		{'a','m'},
		{'b','n'},
		{'c','l'}
};

deque 允许使用常数项时间在头部插入或删除元素

posted @ 2021-12-23 01:47  melt00  阅读(41)  评论(0编辑  收藏  举报