顺序容器

顺序容器

vertor, deque, list, forward_list; 的插入, 删除, 拷贝, 读取, 迭代器


#include <iostream>
#include <cstdlib>
#include <list>
#include <vector>
#include <string>
#include <array>
#include <deque>
#include <forward_list>

int main()
{
	//vector; 
	//不支持push_front 和 emplace_back;
	//不支持pop_front删除;
	//resize扩展大小; 实质不改变容量中元素的数量, 它仅影响预先分配的内存大小;
	std::vector<int> a;

	a.push_back(10);
	a.push_back(1);
	a.push_back(20);
	/*
	for (auto &i : a)
		std::cin >> i;
	*/
	a.insert(a.begin(), 213);						//vertor不支持 push_front 但是可以用insert将元素插入头位置, 只是很耗时;并且insert返回值是插入元素的位置
	/*
	int i;
	std::cin >> i;
	a.push_back(i);
	*/

	auto c = a.begin();
	auto c1 = *c;
	auto c2 = a.front();							//a中首元素的引用
	auto b = a.end();								//迭代end指向最后一位元素后不存在的元素位置
	auto b1 = *(--b);
	auto &b2 = a.back();	b2 = 10000;				//a中尾元素的引用
	auto d = a.cbegin();
	auto e = a.crbegin();
	std::vector<int >::iterator m = a.end();
	std::vector<int >::const_iterator q = a.begin();
	std::vector<int >::iterator w = a.begin();

	a.pop_back();									//删除首元素
	a.erase(a.begin() + 1, a.end() - 1);			//删除范围元素

	a.resize(10);									//扩展大小到10;
	a.resize(5, 1);									//将大小扩展到5, 全部为1, 其他多余的元素删除;

	std::cout << "vector : \n";
	for (auto i : a)
		std::cout << i << " ";
	std::cout << '\n' << a.size() << '\n';
	for (int i = 0; i < a.size(); i++)
		std::cout << a[i] << " ";
	a.clear();

	//deque; 
	//与vector相比, 可以将元素插入头位置, push_front;
	std::deque<int > a1 = { 1 ,2 ,3 ,4 ,5 ,6 ,7, 8, 9, 10 };
	a1.push_back(11);
	a1.push_front(12324);


	//list;
	std::list<std::string > str = { "123", "234", "345" };
	std::list<std::string > stri = { "243235", "asd" };
	std::list<std::string > str1;
	str1.push_front("2423");
	str.assign(10, "1");							//用assign初始化10 个 "1";
	/*
	for (auto &st : str)
		std::cin >> st;
	*/
	str.push_back("12222");
	str.push_front("122222");						//list, forward_list, deque还支持 push_front 将元素插入头位置;
	
	std::cout << "\n\n list : \n";
	for (auto i : str)
		std::cout << i << " ";


	//array;
	//不支持pop的删除操作
	//不支持resize;
	std::array<int, 10> ar = { 1, 2, 3, 4, 5 };
	std::array<int, 10 > ar0 = { 2, 4, 6, 8, 10, 111 };
	std::array <std::string, 10 > ar1;
	
	std::cout << "\n\n array : \n";
	for (auto i : ar)
		std::cout << i << " ";



	//forward_list; 
	//不支持push_back和emplace_back; 
	//有专有的insert 和 emplace; 
	//而forward_list不能递减 即, --;
	//不支持pop_back的删除, 有特殊版本的eraser
	std::forward_list<std::string > str0 = { "1", "2", "3" };
	std::forward_list<std::string > str2(str0);

	std::cout << "\n\n forward_list : \n";
	for (auto i : str0)
		std::cout << i << " ";



	//拷贝;
	str0.assign(str.begin(), str.end());			//array不能用assign拷贝;
	std::array<int, 10 > cpyar = ar;

	//交换;
	ar.swap(ar0);									//array类型数组大小要一样, 将ar与ar0交换;
	swap(ar, ar0);
	str.swap(stri);


	system("pause");
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值