数组用法
1 2 3 4 5 6 7 8 9 10 11 12
| swap(a[1], a[3]);
sort(a.begin(),a.end());
reverse(a.begin(), a.end());
memset(a, 0, a.size());
a.push_back();
vector< vector<int> > result
|
set集合的用法
集合中没有重复元素
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| set<int> s; set<int>::iterator it;
s.insert(10);
s.erase(10);
s.clear();
s.size();
s.empty();
it = s.find(10);
|
mutiset:多重集合与set最大的区别是它可以插入重复元素,如果删除的话,相同的会一起删除,如果查找的话,返回该元素的迭代器的位置,若有相同,返回第一个元素的地址,其它使用和set基本类似。
c++中map中的元素按key升序排列,基本格式为map m,需要使用头文件#include
1 2 3 4 5
| map<int, string> studentsID; studentsID.instert(pair<int, string>(1, "student_one")); studentsID.instert(map<int, string>::value_type(2, "student_two")); studentID[3]="student_three";
|
字符串
1 2 3 4 5 6 7 8 9
| sort(a.begin(), a.end());
transform(s.begin(), s.end(), s.begin(),::tolower);
string name("rockderia"); string firstname(name.substr(0,4));
|
异或(^):相同为0,不同为1
与运算(&):同时为1,才为1
或运算(|):同时为0,才为0
取反(~)
左移(<<):左边的二进制丢失,右边补0,左移最高位不包括1,左移相当于该数乘2;
右移(>>):正数左补0,负数左补1
不同长度的数据进行位运算时,系统会自动补齐。
不使用+、-、×、/实现加法函数
- 先使用异或运算计算每位二进制相加的结果,
- 然后进行与运算并左移一位计算进位数,
- 重复执行,直到进位数为0。
1 2 3 4 5 6 7 8
| int MyAdd(int num1, int num2) { while (num2 != 0) { int temp = num1 ^ num2; num2 = (num1 & num2) << 1; num1 = temp; } return num1; }
|
栈
栈具有先进后出的特性
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| stack<int> s;
stack<int, list<int>> s1; stack<int, list<int>> s2(s1);
s.push();
s.pop();
s.top();
s.empty()
s.size()
|
队列
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| queue<int> q;
q.push(x)
q.pop()
q.front()
q.back()
q.empty()
q.size()
|
队列具有先进先出的特性