Vector
相关攻略
vector
Vector 遍历
可以直接用下标v[i]进行遍历
或者 v.at(i)进行遍历
或者 for (it = v.begin(); i != v.end(); i++) *i
Vector 常用方法
v.push_back(item) 将一个成员推进vector
v.pop_back(item) 弹出一个成员
v.size() vector的大小
v.empty() vector是否为空,空返回为1,非空返回1
v.front() 第一个元素
v.back() 最后一个元素
正向iterator
vector
for (i = v.begin(); i != v.end(); i++) cout << *i;
反向iterator
vector
for (ir = v.rbegin(); ir != v.rend(); ir++) cout << *ir;
Map
map: 红黑树实现((查询、插入、删除都是O(logn))
unordered_map: hash 结构, C++ 11 标准库
Map 申明
map<string, string> m;
插入
利用insert 函数进行插入 m.insert(pair
(“cx”, “student1”)); 利用”array”进行插入 m[“cx”] = “student1”
寻找 find()
iter = m.find("cx");
if (iter != m.end()) {
//Already find
cout << "The value is" << iter->second << endl;
} else {
//Not find
}
删除
// 用迭代器删除
iter = m.find("cx");
m.erase(iter);
// 用关键词删除
int n = m.erase("cx");
Set
有multiset即set中可以存在重复的元素,还有普通的hashset
Set 申明
unordered_multiset<int> set1;
unordered_multiset<int> set2 ({1, 2, 3});
set1 = {1, 2, 3};
unordered_set<int> set3;
插入
set1.insert(1);
查找
if (set3.find(key) == set3.end()) {
cout << "Not find" << endl;
} else {
cout << "Find" << endl;
}
Auto 遍历
遍历map时候, 可以使用auto 进行遍历,注意访问时候不再是map->first而变为map.first
for (auto it : map) {
int val = it.first;
int remain = value - val;
if ((val == remain && it.second > 1) || (val != remain && map.find(remain) != map.end())) return true;
}
for (auto it = map.begin(); it != map.end(); it++) {
int val = it->first;
int remain = value - val;
if ((val == remain && it->second > 1) || (val != remain && map.find(remain) != map.end())) return true;
}