vector容器嵌套容器
#include vector
void test1
{
vector<vector<int>>v;
vector<int>v1;
vector<int>v2;
vector<int>v3;
vector<int>v4;
//向内层容器添加数据
for(int i = 0:i<4;i++)
{
v1.puch_back(i+1);
v2.puch_back(i+2);
v3.puch_back(i+3);
v4.puch_back(i+4);
}
//将内层容器作为个体加入外层容器中
v.push_back(v1);
v.push_back(v2);
v.push_back(v3);
v.push_back(v4);
//通过外层遍历全部数据,利用嵌套for循环
for(vector<vector<int>>::iterator it = v.begin();it != v.end();it++)
{
for(vector<int>::iterator vit = (*it).begin();vit != (*it).end();vit++)
{
cout<<*vit<<" ";
}
cout<<endl;
}
}
string容器
本质:
string时c++风格的字符串,而string本质上是一个类
string和char的区别
char是一个指针
string是一个类,类内部封装了char*,管理这个字符串,是一个char型的容器
特点:
string内部封装了很多成员方法
例:查找find 拷贝copy 删除delete 替换replace 插入insert
string管理char所分配的内存,不用担心赋值越界和取值越界等,由类内部进行负责
string构造函数
构造函数原型
string(); 创建一个空的字符串
string(const char* s);使用字符串s初始化
string (const string& str); 使用一个string对象初始化另一个string对象
string(int n,char c); 使用n个c字符初始化
string str;
const char* str = "hello world";
//指针定义字符串法 编译时会自动将字符串存入str指针变量指向的空间
string s1(str);
string s2(s1);
string s3(10,'a');
string赋值操作
string& operator = (const char * s) char*类型字符串 赋值给当前的字符串
string& operator = (const string &s) 把字符串s赋给当前的字符串
string& operator = (char c) 把字符赋给当前的字符串
string& assign = (const char * s ,int n) 把字符串的前n个字符赋给当前的字符串
string& assign = (int n,char c) 用n个字符c赋给当前字符串
//等号方法 以及assign方法
string str1;
str1.assign("hello",5);
string str2;
str2.assign(10,'w');
string字符串拼接
利用重载+=符号或者append函数
string& operator+=(const char * str);
string& operator+=(const char c);
string& operator+=(const string& str);
string& append(const char * s);把字符串s连接到当前字符串末尾
string& append(const char * s,int n); 把字符串s的前n个字符连接到当前字符串的结尾
string& append(const string& s);
string& append(const string& s,int pos,int n) ; 字符串s中从pos开始的第n个字符串结尾
string str1 = "hello";
str1 += "world";
string str2 = "world";
str1 += str2;
string str3;
str3.append(str1,4);
str3.append(str1,0,3);
//截取 取头不取尾
string查找和替换
查找:查找指定字符串是否存在
替换:在指定的位置替换字符串
函数原型:
int find(const string& str ,int pos = 0) const 查找str第一次出现位置,从pos开始查找
int find(const char* str ,int pos = 0) const
int find(const char* str ,int pos ,int n) const 从pos位置查找s的前n个字符第一次位置
int find(const char c ,int pos = 0) const 查找字符c第一次出现位置
int find(const string& str ,int pos = npos) const 查找str最后一次位置 从pos开始
string& replace(int pos,int n,const string& str)替换从pos开始n个字符为字符串str
string& replace(int pos,int n,const char* s)
string str1 = "abcdefg";
int pos = str1.find("de")
//存在默认值pos = 0
//返回值是int 如果为找到会返回-1
pos = str1.rfind("de");
//find和refind的区别在于查的方向不同
str1.replace(1,3,"1111");
//替换会截取到我指定的字符数,但是插入时,会将输入的字符串全部插入