c++学习笔记(19)

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");
//替换会截取到我指定的字符数,但是插入时,会将输入的字符串全部插入
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值