c++
1、printf string型字符串
1 printf("%s", s.c_str());
输入string型字符串
1 cin >> s;
而不能用
1 scanf_s("%s", &s);
s1.compare(s2):
相等返回0;s1 > s2 返回 1;s1 < s2 返回-1.
2、map的遍历
1 map<string, vector<Node>> mapp; 2 3 for (auto it : mapp) 4 { 5 string s = it.first; 6 vector<Node> v = it.second; 7 }
另外map会默认初始化,如map<int, int> mp; 则没有赋值的情况下mp[0] = 0;
3、字符串截取
s.substr(pos, n) 截取s中从pos开始(包括0)的n个字符的子串,并返回
s.substr(pos) 截取s中从从pos开始(包括0)到末尾的所有字符的子串,并返回
4、vector 清空
v.clear();
5、set使用
1 set<int> s; 2 int t = 0; 3 s.insert(t); 4 for (auto it = s.begin(); it != s.end(); it++) 5 cout << *it;
set是有序的,不重复的。
6、queue的使用
1.入队:如q.push(x):将x元素接到队列的末端;
2.出队:如q.pop() 弹出队列的第一个元素,并不会返回元素的值;
3.访问队首元素:如q.front()
4.访问队尾元素,如q.back();
5.访问队中的元素个数,如q.size();
7、stack的使用
栈顶元素:s.top()。
其余和queue类似。
8、fill函数填充数组
1 int a[10], b[10][10]; 2 fill(a, a + 10, -1); 3 fill(a[0], a[0] + 10 * 10, -1);
9、字符串转小写
1 for (int j = 0; j < s.size(); j++) 2 s[j] = tolower(s[j]);
10、cout输出double型的整数:
结果会不带小数点。比如:
1 cout << 1.0
输出结果为1。
11、为数组赋某特定值
1 fill(visit, visit + n, 0)
12、双向链表list使用
begin() :返回第一个元素的迭代器
end():返回最后一个元素的迭代器
rbegin():返回最后一个元素的逆向迭代器
rend():返回第一个元素的逆向迭代器
front():返回第一个元素
back():返回最后一个元素
push_front() / push_back():在开头 / 结尾添加元素
pop_front() / pop_back():在开头 / 结尾删除元素
erase(it):通过指向链表中一个元素的迭代器删除该元素。
remove(val):通过元素的值删除一个元素。
13、迭代器
设it为指向一个变量的迭代器,则*it得到该变量的引用。
14、pair
pair<int, int> p;
通过first或second两个成员变量可分别访问两个元素(注意不是函数,没有括号)。
make_pair(a, b)可返回一个pair。