粗略的总结
cin>>s; ???空格,回车,EOF结束
getline(cin,s); 输入一行,空格不结束
长度s.size();
遍历:
for(int i=0;i<s.size();i++){
cout<<s[i];
}
拼接:string t=”123”;
string s=”456”;
s=s+t;//s=”123456”;
s=s+”789”;//s=”123456789”;
s=”00”+s;//s=”00123456789”
清空:s.clear();
??s.empty();//如果s为空则值为1,否则为0;
一维的操作: 定义:vector<int>v;
插入:v.push_back(1);
cout<<v[0];
二维的操作:
vector< vector<int> > asd1;//定义
对于一维数组,可以使用size()获取其长度。
int size = asd.size();
对于二维数组,可以使用以下方法获取行、列的长度。
int size_row = asd1.size(); ?????????//获取行数
int size_column = asd1[0].size(); ???//获取列数
直接赋值即可
asd1[1][1] = 1;
cout << asd1[1][1] <<endl;
asd1[1].push_back(23); //插入列元素
asd1.push_back(asd); //插入一行
删除行:
auto test1 = asd1.begin();
asd1.erase(++test1);
删除列:
auto test2 = test1.begin();
asd1[0].erase(++test2);
遍历:
vector<vector<int> >::iterator p1;
vector<int>::iterator p2;
for (p1 = a.begin(); p1 != a.end(); p1++){
????????for (p2 = p1->begin(); p2 != p1->end(); p2++){
????????????????cout << "[" << *p2 << "]";
????????}
}?
stack<int>st;
先进后出 输入: st.push(1);//在栈首增加 输出: st.top();//输出栈首元素 st.pop();//删除栈首元素 重新定义就自动清空了 while(cin>>n) stack<int>st;
queue<int>q;
先进先出
输入: q.push(1);
输出: q.front(); q.pop();
优先队列
priority_queue<int>q;//大根堆,降序排序 输入: q.push(1); ?
输出: q.top(); q.pop();
priority_queue<int,vector<int>,greater<int>>tp;//小根堆,升序排序
set<int>st; st.insert(); *st.begin();//第一个元素 ??*st.end();最后一个元素 st.find(1);//查找有无1这个元素; st.count(1);//有几个元素1; multiset<int>st;//不去重排序;
map<int,string>mp;//int相当于下标,string相当于内容 int和string的类型可以随意更改; mp[1]=”123”;
deque<int>d;
迭代器:
begin() 指向第一个元素位置
end() 指向最后一个元素后一个位置
rbegin() 指向第一个元素之前一个位置
rend() 指向最后一个元素位置
容量相关:
size() 返回容器大小
max_size() 返回容器最大容量
empty() 判断容器是否为空
resize() 改变容器大小
?成员访问:
使用[ ]方式访问,使用.at()方式访问
front() ?返回第一个元素
back() ?返回最后一个元素
容器调整:
assign 重新给容器分配元素
push_back 向容器末尾插入元素
push_front 向元素开头插入元素
pop_back 删除末尾元素
pop_front 删除开头元素
insert 向指定位置插入元素,返回值为指向最后一个插入位置的迭代器
erase 删除元素
swap 交换两个容器
clear 清空容器
emplace 向指定位置插入元素,只能插入单个元素
emplace_front 在容器开头插入元素(效率比push_front高)
emplace_back 在容器末尾插入元素
|