vector
vector初始化
长度为0的空vector | vector vct1; |
---|---|
vector里面有n个0 | vector vct2(n); |
vector里面有n个m | vector vct3(n, m); |
从已有的vector创建 | vector vct4 = vct3; |
选取已有vector的部分创建 | vector vct5(vct4.begin()+2, vct.end()-1); |
直接创建 | vector vct6 = {1,2,3,4,5,6}; |
vector常用方法
在末尾插入插入 | vct.push_back(num); |
---|---|
删除末尾元素(不返回) | vct.pop_back(); |
获取长度 | int length = vct.size(); |
判空 | vct.empty(); |
根据下标查询 | vct[n]; |
string
string初始化
默认的初始化,s1为一个空字符串 | string s1; |
---|---|
s2是s1的副本 | string s2 = s1; |
直接赋初值 | string s3 = “abcd”; |
直接赋初值 | string s4(“abcd”); |
初始化字符串为n个’c’ | string s5(n,‘c’); |
string方法
索引 | s[n] |
---|---|
连接 | s1+s2 |
赋值 | s1 = s2 |
比较 | s1 == s2 |
判空 | s.empty() |
长度 | size |
queue
queue创建
queue<type> myQue;
queue方法
取队头元素(引用) | myQue.front() |
---|---|
取队尾元素(引用) | myQue.back() |
入队 | myQue.push() |
出队(无返回值) | myQue.pop() |
大小 | myQue.size() |
判空 | myQue.empty() |
stack
stack创建
stack<type> st;
stack方法
入栈 | st.push(); |
---|---|
出栈(无返回值) | st.pop(); |
取栈顶元素 | st.top; |
大小 | st.size(); |
判空 | st.empty(); |
map
类型
类型 | key是否有序 | 键是否可重复 | 效率 | 底层实现 |
---|---|---|---|---|
map | 是 | 否 | O(logN) | 红黑树 |
multimap | 是 | 是 | O(logN) | 红黑树 |
unordered_map | 否 | 否 | O(1) | hash |
unordered_multimap | 否 | 是 | O(1) | hash |
创建
创建空map | unordered_map<int, int> myMap1; |
---|---|
直接赋值 | unordered_map<int, int> myMap2 {{k1, v1}, {k2, v2}…}; |
拷贝赋值 | unordered_map<int, int> myMap3 {myMap2}; |
方法
插入 | myMap[newKey] = newValue; |
---|---|
判空 | myMap.empty(); |
长度 | myMap.size(); |
返回某元素个数 | myMap.count(key) |
查找某元素(返回迭代器) | myMap.find(key); |
查找(判断某元素是否在map中出现过)
//法1 使用count
if (myMap.count(k) >0 ) return found;
// 法2, 用find方法
auto iter = myMap.find(key);
if(iter != myMap.end()){
cout<< iter->first << iter->second <<endl;
// first指key, second指value
return found;
}
set
同map