C++学习笔记 lesson10 C++ vector容器

vector

//vector 序列式容器 可变长的数组 下标进行索引  deque list...
//       关联容器 通过key 和 value进行索引    set map... 
#include<vector>
#include<iostream>
#include<string>
using std::vector;
int main()
{   
	std::string str;
	vector<int>demo;//手动指定类型,int类型的vector
	//vector<int&>res; 不能使用引用,引用是需要初始化,可变长数组不能绑定
	
	vector<int>_ints(10, 100);
	vector<std::string>strings(10, "I Love Mark!!");
	vector<std::string>otherstrings(2, "YoYoYo");
	strings.push_back("I Love Mark So Much!!");//在vector 尾部增加
	strings.back();
	
	strings.pop_back();//弹出尾部元素
	//赋值
	strings.assign(10, "I Love Mark!!!!");//重新给容器赋值
	
	strings = otherstrings;       //容器级别的交换
	strings[0] = otherstrings[0]; //元素的交换 
	//string&(strings.op[](0).op=( string&(other.op[](0))) )
	strings.at(0) = otherstrings.at(0);
	 
	//string&(ver.at(0)).op=(char*)


	for (std::size_t i = 0; i < strings.size(); ++i) //不用i++ , 效率低,i++要产生临时变量
	{
		std::cout << strings.at(i) << std::endl;
	}

	//迭代器 代表的不是对象本身,是当前容器当中的特定的位置
	vector<std::string>strings(10, "666666");
	vector<std::string>::iterator it = strings.begin();
	std::cout << *it << std::endl;
	std::cout << it->c_str() << std::endl;

	auto it = strings.end();
	*it = "886";// begin end 产生的是一个半开空间 [)  end是没有值的

	for (auto it = strings.begin; it != strings.end(); ++it)
	{
		std::cout << *it << std::endl;
	}
	//使用 rbegin 和 rend 要使用 颠倒的迭代器
	for (std::vector<std::string>::reverse_iterator it = strings.rbegin(); it != strings.rend(); ++it)
	{
		std::cout << *it << std::endl;
	}
	//插入
	strings.insert(strings.begin(), "2"); //在begin之前插入
	strings.insert(strings.begin(),10, "2"); //在begin之前连续插入10个2
	//清除
	strings.erase(strings.begin());
	strings.erase(strings.begin(), strings.end());

	auto tt = strings.begin();
	std::cout << *tt << std::endl;
	tt = strings.erase(tt);//vector 发生改变,内部的迭代器也会改变,需要更新
	++tt;
	//清空
	strings.clear();//清空,size为0
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值