6.1 vector
#include<stdio.h>
#include<vector>
using namespace std;
int main()
{
vector<int> a;//一维数组
vector< vector<int> > b;//二维数组
for(int i=1; i<=5; i++) /*在vector后面添加一个元素,O(1) */
a.push_back(i);
a.pop_back(); /*删除vector的尾元素,O(1) */
a.size(); /*获取vector中元素的个数,O(1) */
a.clear(); /*清空vector中的所有元素,O(n) */
a.insert(a.begin(), -1); /*将-1插入a[0]的位置,O(n)*/
a.erase(a.begin()); /*删除a[0]处的元素*/
for(int i=1; i<=5; i++)
a.push_back(i);
a.erase(a.begin()+1, a.begin()+3); /* 删除a[1], a[2]左闭右开 */
vector<int>::iterator it = a.begin();
for(it = a.begin(); it!=a.end(); it++)//左闭右开
printf("%d ",*it);
return 0;
}
/*
1 4 5
*/
6.2 set
#include<stdio.h>
#include<set>
using namespace std;
int main()
{
/*
set 内部自动有序且不含重复元素
insert(); 插入且自动递增排序和去重
find(); 返回set中对应值value得迭代器
*/
set<int> st;
for(int i=1; i<=3; i++)
st.insert(i);
set<int>::iterator it = st.find(2);
printf("%d\n",*it);
st.erase(st.find(1)); //删除元素
st.erase(2);//删除值为2的元素
st.erase(st.begin(), st.end());//删除一个区间的元素
return 0;
}
6.3 string
#include<stdio.h>
#include<string>
#include<iostream>
using namespace std;
int main()
{
/*
1. 通过下标访问,
如果要读入和输出整个字符串,则只能用cin和cout.
或者用c_str()将string类型转换为字符数组进行输出
2. 通过迭代器访问.
3. += 将两个string直接拼接起来。
4. ==, !=, <, <=, >, >=比较大小, 比较规则是字典序.
5. length()/size(), insert()
insert(2, string),在str[2]号位置插入字符串string
insert(2, s1.begin(), s1.end());
6. erase(str.begin()+4);
str.erase(str.begin()+2, str.end()-1);
str.erase(3,2) 删除从3号位开始的2个字符
substr(0, 5) 返回从str[0]开始,长度为len的子串
7. string::npos == -1 或者 string::npos==4294967295
8. str.find(str1); 返回str1在str中第一次出现的位置,若没有则返回string::npos
str.find(str1, pos); 从str的pos号位开始匹配str1,返回值同上.
9. getline(cin, s); 输入一行并赋值给s
*/
string str = "abcd";
for(int i=0; i<str.length(); i++)
{
printf("%c", str[i]);//输出abcd
}
printf("%d\n", str.c_str());
for(string::iterator it = str.begin(); it!=str.end(); it++)
{
printf("%c",*it);
}
if(string::npos==-1)