C++基础知识学习,vector,迭代器,精彩演绎

定义以及初始化
	//vector里面能装任何类型,但是不能装引用,因为引用就不是一个类型

	//定义和初始化
	vector<string> myVector1;
	myVector1.push_back("abc");
	myVector1.push_back("def");

	//拷贝
	vector<string> myVector2(myVector1);
	vector<string> myVector3 = myVector1;

	//C++11列表初始化
	vector<string> myVector4{ "abc","def","ghi" };

	//创建制定数量的元素,有元素数量的东西,一般用圆括号
	vector<string> myVector5(10, "abc");//里面有10个string "abc"
	vector<string> myVector6(10);//不指定元素内容,为默认值,如0,空串

	//{}一般表示元素内容
	//五花八门的初始化方式
	vector<string> myVector7{ 10 };//这一个也是10个空串,不要为什么,就是这样设计的
	vector<string> myVector8{ 10,"hello_world" };//10个hello_world
vector的一些常用方法
	//vector常用方法
	vector<int> myVector9;
	//是否为空
	myVector9.empty();
	//末尾加上元素
	myVector9.push_back(1);
	//清空
	myVector9.clear();
	//在某个位置插入一个元素
	myVector9.insert(myVector9.begin(), 1);
	//访问下表为i的元素
	myVector9[0];
	//重新赋值
	myVector9 = { 1,2,3,4,5 };
范围for
	vector<int> myVector10 = { 1,2,3,4,5,6,7,8,9 };
	//使用引用,提升效率
	for (auto& x : myVector10)
	{
		cout << x << endl;
	}

迭代器

使用案例

	vector<int> myVector11 = { 1,2,3,4,5,7,8,9,10 };
	vector<int>::iterator vectorItem;
	vectorItem = myVector11.begin();//vector的第一个元素
	//end指的不是最后一个元素,而是最后一个元素的后面的一个元素	
	//所以vector为空的时候,end==begin
	while (vectorItem != myVector11.end())
	{
		//因为迭代器本身就是一个指针
		cout << *vectorItem << endl;
		vectorItem++;
	}
  • 反向迭代器
	for (vector<int>::reverse_iterator myItem = myVector11.rbegin(); myItem != myVector11.rend(); myItem++)
	{
		cout << *myItem << endl;
	}
  • 迭代器是什么,使用结构体vector来进行说明
struct student
{
	int num;
	string name;
};
int main()
{
	//声明一个迭代器,装的是结构体
	vector<student> mystudentVector;
	//声明一个未初始化的结构体
	student mySudent;
	//进队列
	mystudentVector.push_back(mySudent);
	//声明迭代器
	vector<student>::iterator myStudentIterator;
	//给迭代器赋值
	myStudentIterator = mystudentVector.begin();


	//一下可以充分理解,迭代器到底是怎么用的
	//找到结构体中的变量有两个方法,都是基于迭代器是指针的原理
	myStudentIterator->name = "william_x_f_wang";
	//都过*直接找到该指针指向的对象
	(*myStudentIterator).num = 1;
}
  • const_iterator
    const_iterator,该迭代器指向的值不能改变,也就是只能读不能改,但是本身的指向是可以修改的,如果迭代器本身就是const的话,就只能用const_iterator
	vector<int> myVector = { 1,2,3,4,5 };
	vector<int>::const_iterator myConstIterator = myVector.begin();
	cout << *myConstIterator << endl;
  • cbegin(),cend()返回常量迭代器
	//cbegin(),cend(),返回常量迭代器
	vector<int> myVector12 = { 1,2,3,4,5,6 };
	//这个常量迭代器就不能更改内容了
	for (auto iter = myVector12.cbegin(); iter != myVector12.cend(); iter++)
	{

	}
  • 删除迭代器中全部元素的方法,并且程序不崩溃
	vector<int> myVector13 = { 1,2,3,4,5,7,8,9,10 };
	auto iter1 = myVector13.begin();
	while (iter1 != myVector13.end())
	{
		//begin的返回值是下一个位置
		iter1 = myVector13.erase(iter1);
	}
	myVector13.clear();
  • 用迭代器遍历string
	string myString = "i love china";
	for (auto myIter = myString.begin(); myIter != myString.end(); myIter++)
	{
		*myIter = toupper(*myIter);
	}
	for (auto myIter = myString.begin(); myIter != myString.end(); myIter++)
	{
		cout << *myIter << endl;
	}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值