string
1. 构造
string s1(); // 1
string s2("hello"); // hello
string s3(3, 'k'); // kkk
string s4("hellohello", 2, 4); // lloh
2. 赋值
string s1 = "hellohello"; // hellohello
string s2.assign(s1); // hellohello
string s3.assign(s1, 2, 4); // lloh
string s4.assign("hellohello", 2, 4); // lloh
3. 长度
string s1 = "hellohello";
int len = s1.size(); // 10
4. 拼接
string s1("hello"), s2("world");
string s3 = s1 + s2; // helloworld
string s4 = s1.append(s2); // helloworld (此时 s1 已经改变)
string s5 = s1.append("world", 2, 2); // helloworldrl
5. 比较
string s1("hello"), s2("world");
int res1 = (s1 < s2); // 1
int res2 = (s1 != s2); // 0
int res3 = s1.compare(s2); // -15 即 ('h' - 'w')
int res3 = s1.compare(3, 1, s2, 4, 2); // 8 即 ('l' - 'd')
6. 子串
string s1 = "helloworld";
string s2 = s1.substr(2, 4); // llow
string s3 = s1.substr(2); // lloworld
7. 交换
string s1("hello"), s2("world"); // hello world
s1.swap(s2); // world hello
8. 查找
string s1 = "helloworld";
int n;
if ((n = s1.find('w')) != string::npos) {
cout << n << s1.substr(n) << endl; // 5 world
}
if ((n = s1.find("wo")) != string::npos) {
cout << n << s1.substr(n) << endl; // 5 world
}
if ((n = s1.find_first_of("l")) != string::npos) {
cout << n << s1.substr(n) << endl; // 2 lloworld
}
if ((n = s1.find_last_of("l", 3)) != string::npos) {
cout << n << s1.substr(n) << endl; // 8 ld
}
if ((n = s1.find_first_not_of("hel")) != string::npos) {
cout << n << s1.substr(n) << endl; // 4 oworld
}
9. 替换
string s1("hello"), s2("world"); // hello world
s1.replace(1, 2, "123456", 2, 3); // h345lo
s1.replace(1, 2, 3, 'k'); // hkkk5lo
s1.replace(1, 2, s2, 3, 2); // hldk5lo
10. 删除
string s1("helloworld"); // hello world
s1.erase(1, 2); // hloworld
s1.erase(4); // hlow
11. 插入
string s1("hello"), s2("world"); // hello world
s1.insert(3, s2, 1, 3); // helorllo
s1.insert(2, 3, 'k'); // hekkklorllo
12. 排序
static bool cmp(char c1, char c2) {return c1 > c2;}
string s1("helloworld");
sort(s1.begin(), s1.end()); // dehllloorw
sort(s1.begin(), s1.end(), cmp); // wroolllhed
set / unordered_set
1. 赋值
set<int> sett;
vector<int> vec = {1, 2, 3, 4, 5, 6};
set<int> sett(vec.begin(), vec.end());
auto it = vec.begin();
set<int> sett(it + 1, it + 3);
2. 长度
sett.size();
3. 插入
set<int> sett;
vector<int> vec = {1, 2, 3}, vec2 = {4, 5 ,6};
set<int> sett(vec.begin(), vec.end());
sett.insert(4);
4. 个数
vector<int> vec = {1, 2, 3, 8, 4, 6, 5, 3, 3, 4}; // 1234568
set<int> sett(vec.begin(), vec.end());
sett.count(3); // 有就为 1 没有为 0
5. 删除
vector<int> vec = {1, 2, 3, 8, 4, 6, 5, 3, 3, 4}; // 1234568
set<int> sett(vec.begin(), vec.end());
sett.erase(3) // 124568
6. 查找
it = set.find(2);
cout << *it; // 2