string 容器
常见用法
string s1 = "Hello"
string s2("Hello")
string s3(s2)
string s4 = s3
getline(cin,s)// 从cin中读取一行给s
s.empty()// 空?true:false;
s.size()//返回字符串个数
+,=,==,!= 与其余数据结构类似
<,<=,>,>= //按照字典序比较
拓展
//查找子串
sq.find(s,0)//返回的是子串位置。yl第二个参数是查找的起始位置,如果找不到,就返回string::npos
if (sq.find("aa1", 0) == string::npos)
{
cout << "找不到该子串!" << endl;
}
//append()与 replace()函数
str.append(args) // 在尾部添加一个字符或一个字符串
str.replace(pos, args)
//访问子串
str.find(args) //查找args 第一次出现的位置
str.rfind(args) //查找args最后一次出现的位置
vector
初始化
vector<int> v1;
vector<vector<int> >; //注意空格。这里相当于二维数组int a[n][n]嵌套vector;
vector<int> v5 = { 1,2,3,4,5 }; //C11列表初始化
vector<string> v10(4); //默认初始化为空字符串
其他
v.empty()
v.size()
v.push_back()
<,<=,>,>= 字典序比较
v.erase()
v.clear()
v.insert()
v1.insert(iter, a) // 将元素a 插入到迭代器指定的位置的前面,返回新插入元素的迭代器(在c++11标准之前的版本,返回void)
v1.insert(iter, iter1, iter2) //把迭代器[iterator1, iterator2]对应的元素插入到指定的位置的前面
v1.erase(iterator) // 删除人人迭代器指定的元素,返回被删除元素之后的元素的迭代器。(效率很低,最好别用)
Set
multiset<int>st;//多重集
s.begin();//返回集合第一个元素
s.end();
s.clear();
s.empty();
s.insert();
s.erase();
s.size();
set<int>s;
set<int,greater<int > >s2;//带大于比较器的集合(默认为小于)
int a[5]={1,2,3,4,5};
set<int > s(a,a+5);//用数组初始化
set<int > s(setc.begin(),setc.end());//用集合初始化
set<int > sete(sete);//拷贝
s.erase(_x);
s.clear();
s.find(_x);//存在? 地址:s.end();
s.lower_bound(_x);//返回迭代器
s.upper_bound(_x);//返回迭代器
//自定义比较函数
struct cmp{
bool operator () (const int &a,const int &b){
return a>b;
}
}
set<int,cmp>s;
//指针
set<int>::iterator it;
auto it;
next(it)//it 的下一个
prev(it)//it 的上一个
MAP
mp.clear()
auto it = it.begin()
it.first()//key
it.second()//value