avatar

目录
C++编程总结(持续更新)

字符串

删除末尾字符

1.str = str.substr(0, str.length() - 1);
2.str.erase(str.end() - 1);
3.str.pop_back();

判断字符串里面是否含有某个字符串?

c++
1
2
3
4
5
6
string a="abcdefghigklmn";
string b="def";
string::size_type idx;
idx=a.find(b);//在a中查找b.
if(idx == string::npos )//不存在。
cout << "not found\n";

字符串替换

string.replace(起始index,结束index,代替字符串)

c++
1
text.replace(i,j-i+1, dist[s]);  leetcode1410

反转字符串

c++
1
reverse(s.begin(), s.end())

分割字符串

python
1
2
3
4
5
split(sep, num)
string = "www.gziscas.com.cn" # 以'.'为分隔符
print(string.split('.'))
['www', 'gziscas', 'com', 'cn']
#不写参数时,默认表示用 空格,\n,\t 分隔字符串

分割英文句子为单词并保存

c++
1
2
3
4
5
6
7
8
9
10
vector<string>res;
for(int i=0;i<sentence.size()-1;i++){
for(int j=i+1;j<sentence.size();j++){
if(sentence[j]==' '){
res.push_back(sentence.substr(i,j-i));
i=j;
break;
}
}
}

判断A是不是B的前缀

B.substr(0,A.size())==A
substr超过也不会报错,比如A.size>B.size,就会取B

字母专题

isalpha

isalpha()用来判断一个字符是否为字母,如果是字符则返回非零,否则返回零。

c++
1
2
cout << isalpha('a');//返回非零
cout << isalpha('2');//返回0

容器

vector获取值对应的索引

c++
1
2
vector<int>::iterator p=find(cur.begin(),cur.end(),queries[i]);
auto index = std::distance(std::begin(cur), p);

vector指定位置插入

c++
1
b.insert(b.begin(),q);  在首部插入

将一个vector s1插入到另一个vector s2

c++
1
s2.insert(s2.end(),s1.begin(),s1.end())

int转string

algorithm头文件
string to_string (int val);

图编程

1.以u为顶点出发寻找与u,v能构成三角形的顶点w是,需要遍历u的临边,要注意过跳过v,添加if(v==w)continue
2.变量的作用域重叠,导致后来定义会覆盖掉之前的,应定义新的变量
3.入队出队寻找followers时,忘记对访问过的边做已访问标记,导致队列不会走空,进入无限循环,运行时间很久,诊断发现内存不断增加。

max_element() 和 min_element()

在头文件 #include 中,返回的是迭代器,所以输出值的话要在前面加*
例子:

c++
1
2
vector<int>a;
return *max_element(a.begin(),a.end())

VS使用

  1. 开启诊断 alt+ctrl+f2
    2.找不到 #include <graphics.h>,下载easyx https://easyx.cn/

DFS与BFS

DFS --stack–O(h)(根据树的高度)–不具最短路–恢复现场(恢复到之前的状态)–剪枝(可行性剪枝、最优性剪枝)
BFS --queue–O(2h2^{h})(宽度)–最短路

DFS:经典题目:排练数字、N-皇后

文章作者: Sunxin
文章链接: https://sunxin18.github.io/2020/02/03/C/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 lalala
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论