leetcode刷题笔记
C++11语法
一 、for循环的用法
//C++11 for循环的新写法
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> number = {3, 4, 5, 6, 0, 2, 4};
for(int num : number) {
if(num != 0)
cout << num << " ";
}
return 0;
}
输出结果
3 4 5 6 2 4
二、几个常用函数
#include<algorithm>
(1)sort(a.begin(),a.end()); //对a中的从a.begin()(包括它)到a.end()(不包括它)的元素进行从小到大排列
less<数据类型>()//从小到大排
greater<数据类型>()//从大到小排
int a[10];
for(int i = 1; i<=10 ;i++)
a[i-1] = i;
sort(a,a+10,less<int>());
sort(a,a+10.greater<int>());
(2)reverse(a.begin(),a.end()); //对a中的从a.begin()(包括它)到a.end()(不包括它)的元素倒置,但不排列,如a中元素为1,3,2,4,倒置后为4,2,3,1
(3)copy(a.begin(),a.end(),b.begin()+1); //把a中的从a.begin()(包括它)到a.end()(不包括它)的元素复制到b中,从b.begin()+1的位置(包括它)开 始复制,覆盖掉原有元素
(4)find(a.begin(),a.end(),10); //在a中的从a.begin()(包括它)到a.end()(不包括它)的元素中查找10,若存在返回其在向量中的位置
三、getline函数
istream& getline ( istream &is , string &str , char delim );
string s;
getline(cin,s,'#');
getline(cin,s);
其中 istream &is 表示一个输入流,譬如cin;
string&str表示把从输入流读入的字符串存放在这个字符串中(可以自己随便命名,str什么的都可以);char delim表示遇到这个字符停止读入,在不设置的情况下系统默认该字符为’\n’,也就是回车换行符(遇到回车停止读入)。
四、stringsteam用法
可以完成安全自动的类型转换
#include<sstream>
stringstream ss;
string s;
int a;
s = "1020";
ss.clear();
ss.str(s);
ss>>a;
cout<<a<<endl;
进行字符串的分割
string s;
stringstream ss;
while(getline(cin,s))
{
ss.clear();
ss.str(s);
int sum = 0;
int a;
while(ss>>a)
{
sum += a;
}
cout<<sum<<endl;
}
由于效率低,利用.clear(),.str(string str),进行重用
.str()可以原本地输出字符串
五、pair类型 tuple类型
pair(元组)可以存储两个不同类型的数据,应i程度上取代自定义结构体。
pair内置了各种比较函数,六哦即使优先比较first的大小,如果first的大小相同在比较second的大小
pair p;
p.first = 0; p.second = 1.1;
p = make_pair(0,1.1);
六vector
vector是不定长数组。其数组长度的扩增策略是每次乘2,
.emplace()
.push_back()
.emplace_back()
.begin()
.iterator()
.insert()
大的数组不要放在主函数当中
七、auto
for( auto it = d.begin(); it != d.end(); it++)
for(auto x:d)
{
}
for(auto &x:d) cin>>x;
auto a =1,b =1.0;//不可用,两个变量的类型不等
本文详细介绍了C++11中的新特性及其应用,包括增强的for循环、常用算法函数、字符串处理、pair与tuple类型、vector容器操作、auto关键字、list链表、stack和queue等内容,并提供了丰富的代码实例。

被折叠的 条评论
为什么被折叠?



