vector的使用

#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std;

int main(int argc, char** argv)
{
	vector<int> ivec;
	//想vector尾部插入元素,返回void
	ivec.push_back(1);
	ivec.push_back(11);
	ivec.push_back(12);
	//得到首元素和尾元素
	printf("front: %d, back: %d\n", ivec.front(), ivec.back());
	//从尾部弹出元素,返回void
	ivec.pop_back();
	//在pos处插入元素,返回指向插入元素的迭代器
	vector<int>::iterator iter = ivec.insert(ivec.begin(), 2);
	printf("%d\n", *iter);
	//在ivec开始位置插入2个3,返回插入的第一个元素的迭代器
	iter = ivec.insert(ivec.begin(), 2, 3);
	printf("%d\n", *iter);
	//在ivec开始位置插入initializer_list,返回插入的第一个元素的迭代器
	iter = ivec.insert(ivec.begin(), { 1, 2, 3 });
	printf("%d\n", *iter);
	//在ivec开始位置插入ivec.begin()到ivec.end()之间的元素,返回插入的第一个元素
	iter = ivec.insert(ivec.begin(), ivec.begin(), ivec.end());
	printf("%d\n", *iter);
	iter = ivec.begin();
	for (; iter != ivec.end(); ++iter)
	{
		printf("%d ", *iter);
	}
	printf("\n");
	//删除指定位置的元素,返回下一个元素的迭代器
	iter = ivec.erase(ivec.begin());
	printf("%d\n", *iter);
	//删除指定区间的元素,返回下一个元素的迭代器
	iter = ivec.begin();
	iter = ivec.erase(iter, ++iter);
	//iter = ivec.erase(iter, iter++);   //这样会出错
	printf("%d\n", *iter);
	//在指定区间内查找指定元素,返回指向找到的元素的迭代器,没找到元素则返回尾迭代器(end())
    iter = find(ivec.begin(), ivec.end(), 3);
	if (iter != ivec.end())
		printf("%d\n", *++iter);
	else
		printf("end\n");
	iter = find(ivec.begin(), ivec.end(), -1);
	if (iter != ivec.end())
		printf("%d\n", *++iter);
	else
		printf("end\n");
	//排序
	sort(ivec.begin(), ivec.end());
	iter = ivec.begin();
	for (; iter != ivec.end(); ++iter)
	{
		printf("%d ", *iter);
	}
	printf("\n");
	//判断vector是否为空
	printf("empty(): %d\n", ivec.empty());
	//判断vector中含有元素数量
	printf("size(): %d\n", ivec.size());
	//理论上vector可存放的最多的元素数量,与寻址有关
	printf("max_size(): %d\n", ivec.max_size());
	//vector的容量大小
	printf("capacity(): %d\n", ivec.capacity());
	//返回指定位置的元素,使用超过元素数量的位置会引发错误
	printf("at(): %d\n", ivec.at(3));
	//resize会使vector中的元素保持在num个,resize的参数就是num,capacity并不会变
	//ivec.resize(2);
	//printf("size(): %d\n", ivec.size());
	//printf("capacity(): %d\n", ivec.capacity());

	vector<int> jvec;
	//把vector中原来的元素清空,往vec中添加3个10
	jvec.assign(3, 10);
	iter = jvec.begin();
	for (; iter != jvec.end(); ++iter)
	{
		printf("%d ", *iter);
	}
	printf("\n");
	jvec.assign(ivec.begin(), ivec.end());
	iter = jvec.begin();
	for (; iter != jvec.end(); ++iter)
	{
		printf("%d ", *iter);
	}
	printf("\n");
	getchar();
	return 0;
}


运行结果如下:

front: 1, back: 12
2
3
1
1
1 2 3 3 3 2 1 11 1 2 3 3 3 2 1 11
2
3
3
end
1 1 1 2 2 2 2 3 3 3 3 3 3 11 11
empty(): 0
size(): 15
max_size(): 1073741823
capacity(): 16
at(): 2
10 10 10
1 1 1 2 2 2 2 3 3 3 3 3 3 11 11


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值