目录
string:
substr:截取指定位置区间的字符串
find:查询要找的字符第一次出现的位置。(通过substr 和find可以很好的截取分割出每一个部分)
string a="123/456";
string b=a.substr(0,3); //截取0-3位置的字符串
cout<<b;
int c=a.find("/"); //找到"/"第一次出现的位置。返回的是整数
cout<<endl<<c<<endl;
整数和字符串互换:
to_string:转成字符串
stoi(m.c_str):将字符串m转变为int,当遇到非数字字符停止
string bb="1234";
int aa=stoi(bb.c_str());
字符转整数:
char cc='2';
int oo=cc-'0'; //字符char转int
cout<<oo<<endl;
保留小数
想保留几位,%.xf,就修改x变成几即可
double u=2.1231;
printf("%.2f",u);//保留两位小数
翻转数组、字符串
reverse翻转功能,注意函数返回值是void,函数会直接把放进去的变量翻转
string t="123456";
reverse(t.begin(),t.end());//翻转字符串
cout<<t<<endl;
int aaa[]= {1,2,3,4,5,6,7,8,9};
reverse(aaa,aaa+9);//翻转数组
for(int i=0; i<9; i++) {
cout<<aaa[i];
}
vector 动态数组
插入:push_back()
遍历:
vector<int>x;
x.push_back(1);
x.push_back(2);
x.push_back(3);
x.push_back(4);
x.push_back(5);
for(int i=0;i<x.size();i++){
cout<<x[i]<<endl;
}
map 映射
赋值:直接把键作为位置索引即可
map<string,int>mp;
mp["1"]=2;
string po="s";
mp[po]=3;
cout<<mp["1"]<<endl;
cout<<mp[po]<<endl;
删除:
mp.erase("1");
栈
插入:push()
获取栈顶:top()
弹出:pop()
stack<int>xx;
xx.push(2);
int i=xx.top();
cout<<i<<endl;
xx.pop();
queue队列
push(x):将元素x放入队尾。
pop():将队头元素出队。
empty():判断队列是否为空,为空返回true,否则返回false。
size():返回队列长度。
front():返回队头元素,不出队。
back():返回队尾元素。
queue<int>de;
de.push(23);
cout<<de.front()<<endl;
de.pop();
deque双端队列(在一个元素插入删除之后,其他的元素地址会发生变化)
类似数组可以直接获取位置处的元素
双端队列的本质是指针地址,对于一个队列a[i],i的地址不变,数可以变,所以当队列中插入元素时,元素的排列顺序发生变化,那么地址上所存储的元素就跟着变了
deque<int>a;
a.push_back(1);
cout<<a[0];
size()//返回返回容器中元素个数
begin()//返回头部迭代器
end()//返回尾部+1迭代器
rbegin()//返回逆首部迭代器
rend()//返回逆尾部-1迭代器
front()//返回首个元素
back()//返回尾部元素
push_front()//在前面添加一个函数
emplace_frontback()//和push_front()是一样的作用
push_back()//在末尾添加一个函数
emplace_back()//和push_back()是一样的作用
pop_front()//弹出第一个个元素
pop_back()//弹出最后一个元素
empty()//判断是否为空
insert()//在指定位置插入元素
erase()//在指定位置删除元素
clear()//清空容器
deque<int>dq;
dq.push_front(1);
dq.push_front(2);
dq.pop_front();
cout<<dq.front()<<endl;
dq.push_back(4);
dq.push_back(5);
dq.pop_back();
cout<<dq.back()<<endl;