C++笔记

Vector

相关攻略
vector v;

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 :: iterator i;
for (i = v.begin(); i != v.end(); i++) cout << *i;

反向iterator

vector :: reverse_iterator ir;
for (ir = v.rbegin(); ir != v.rend(); ir++) cout << *ir;

Map

相关攻略

map: 红黑树实现((查询、插入、删除都是O(logn))

unordered_map: hash 结构, C++ 11 标准库

Map 申明

map<string, string> m;

插入

  1. 利用insert 函数进行插入 m.insert(pair(“cx”, “student1”));

  2. 利用”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;
}