STL vector

学习了一个vector的基本使用,弄明白了之前一直不理解的预分配和resize

以下是对f_zyj大佬模板中提供的vector函数的测试和注解

f_zyj大佬的博客:

http://blog.youkuaiyun.com/f_zyj/article/details/51594851

地址为pdf中第12页

#define pause system("pause");
#define fence puts("-------------");
#define endline puts("")
#include <iostream>
#include <vector>

using namespace std;

int main()
{
	//定义
	vector<int>s;
	vector<int>ss(10);
	//基本操作
	fence;
	//ss已经初始化了空间,所以可以直接下标访问.
	ss[0] = 1;
	ss[8] = 8;
	ss[9] = 9;
	cout << ss.front() << " " << ss.back() << '\n';
	//删除表尾元素
	ss.pop_back();
	for (auto i : ss)cout << i << " ";
	endline;
	fence;
	//在表尾插入元素
	s.push_back(1);
	//删除迭代器位置元素
	s.erase(s.begin());
	fence;
	//首元素的迭代器和尾元素的下一位的迭代器
	auto bg = ss.begin(), ed = ss.end();
	//定义一个对象sss并从迭代器所指区间复制初值
	vector<int>sss(bg, ed);
	//删除迭代器指定序列
	ss.erase(bg, ed);
	//判断是否为空
	cout << ss.empty() << '\n';
	fence;
	//输出序列长度
	cout << sss.size() << '\n';
	//改变序列长度,可以扩大数组缓冲区
	sss.resize(11111);
	cout << sss.size() << '\n';
	//容量
	cout << sss.capacity() << '\n';
	fence;
	//预分配缓冲空间,使之可以容纳n个元素,不影响size
	sss.reserve(111111);
	cout << sss.size() << '\n';
	cout << sss.capacity() << '\n';
	fence;
	//清空
	sss.clear();
	sss.resize(10);
	for (auto &i : sss)i = 1;
	//交换元素
	sss.swap(s);
	for (const auto i : s)cout << i << " ";
	endline;
	fence;
	//在迭代器前插入元素
	s.insert(s.begin(),0);
	for (const auto i : s)cout << i << " ";
	endline;
	//插入2个
	s.insert(s.begin(), 2, 0);
	for (const auto i : s)cout << i << " ";
	endline;
	//插入一段
	s.insert(s.begin(), s.begin(), s.end());
	for (const auto i : s)cout << i << " ";
	endline;
	fence;
	pause
}
/*
运行结果:
-------------
1 9
1 0 0 0 0 0 0 0 8
-------------
-------------
1
-------------
9
11111
11111
-------------
11111
111111
-------------
1 1 1 1 1 1 1 1 1 1
-------------
0 1 1 1 1 1 1 1 1 1 1
0 0 0 1 1 1 1 1 1 1 1 1 1
0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1
-------------
请按任意键继续. . .
*/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值