-
构造函数
这里的技巧还是挺多的,但容易忽略
vector v,默认初始化,大小为0,适合不知道元素个数的情况;vector v(v1)或vector v = v1,拷贝一份来构造,v和v1具有相同的元素;vector v = {value1, value2, ...}或vector v {value1, value2, ...},用已知元素初始化;vector v(number),指定空间为number,每个元素进行缺省的值初始化。对于int,也就是被赋值为0。当程序运行初期元素大致数量可预知,而元素的值需要动态获取的时候,可采用这种初始化方式;vector v(number, value),还是指定空间为number,只不过这number个元素都初始化为value。 -
二维 vector 的初始化
vector < vector > v,默认;vector < vector > v(v_d2),用二维vectorv_d2来初始化v;vector < vector > v(rownum, vector_),第一个参数的含义是“有多少个子vector”,第二个参数表示每个子vector是什么样的。第二个参数可以传入上面讲到的构造一维vector的任何形式。比如:vector < vector > v(rownum, vector (colnum))表示一个全部元素为0的rownum行colnum列的二维vector,或者直接理解为二维数组;再比如vector < vector > v(rownum, vector (colnum, 10))就是将这个二维vector再初始化为10。 -
访问
v[idx]、v.front()、v.back(),访问索引为idx的元素,访问第一个元素,访问最后一个元素。 -
插入与删除
v.push_back (value),在vector末尾添加一个元素value;v.insert (iter, value),在迭代器位置添加元素value;v.pop_back (),删除vector末尾元素;v.erase(iter),删除迭代器位置的元素。 -
翻转、排序、获取最大值最小值元素
这些函数所在头文件为algorithm,而不是vector
reverse(v.begin(), v.end()),翻转。sort(v.begin(), v.end()),排序,也可以传入cmp。max_element(v.begin(), v.end())和min_element(v.begin(), v.end())分别表示获取最大值和最小值对应的迭代器,所以一般我们都在前面加上*,直接获取元素值。另外,由于vector和string可以采用
*(iter+1)的方式进行访问(其他STL不行),所以可以出现部分翻转和部分排序,比如reverse(v.begin(), v.end())、sort(v.begin()+1, v.end())、*max_element (v.begin(), v.end()-1)等。 -
常见的函数
size()、empty()、clear()。
-
构造函数
这里的技巧还是挺多的,但容易忽略
string s:空串;string s(str):与str一样的串;string s(str, pos, number):相当于取str从索引pos开始的number个字符的子串进行初始化;如果不传入number则取到str末尾(这完全就是substr后再赋值嘛)string s(number, ch):用number个字符ch进行初始化。 -
字符串长度
.size()和.length()(我比较喜欢前者,因为前者输入的字符少~) -
获取最后一个位置的字符
s.back() -
大小写转换
转换为大写:
transform (s.begin (), s.end (), s.begin (), ::toupper)转换为小写:transform (s.begin (), s.end (), s.begin (), ::tolower)也可以遍历字符串,对每个字符进行
s[i] = tolower(s[i])的操作来转为小写。 -
查找
未查找到:
s.find ('a') == string::npos,返回1表示未找到,返回0表示找到了从索引为
i处开始查找:s.find ('a', i),若找到,返回所在索引位置,没找到返回string::npos当然,也可以查找是否包含某个子串。
-
获取子串
s.substr (pos, number),从索引为pos的位置开始向后截取number个元素(含pos)s.substr (pos),从索引为pos的位置开始向后截取到末尾 -
删除字符或字符串
s.erase(pos, number),从索引为pos的位置开始向后删除number个元素(含pos)s.erase(pos),从索引为pos的位置开始向后删除到末尾 -
插入字符串
s.insert (pos, str),将str的首字符放在s的pos位置,其余字符后移。str只能是字符串不能是字符。 -
部分替换
s.replace(pos, number, str),将子串s[pos~pos+number-1]的位置全部换成字符串str。另一种传参形式为
s.replace(pos, number, n, ch)等价于s.replace(pos, number, string(n, ch))。 -
.c_str()的用法将string(C++)转换为char *(C),常见的两个用法:
printf(%s, s.c_str())、atoi(s.c_str()) -
字符串比较大小
如果题目要求按字典序排序,则直接通过操作符
>、{1, 2}, {5, -1}, {-1, 0}};关注打赏
