STL_vector使用

Construct vector:
#include <iostream>
#include <vector>

int main()
{
	std::vector<int> first;           //空的vector
	std::vector<int> second(4, 100);  // 第一个值为元素个数,第二个值为初始值
	std::vector<int> third(second.begin(), second.end()); //通过第二个构造
	std::vector<int> fourth(third);         // 拷贝第三个

	//用数组进行构造
	int myints[] = { 16, 2, 77, 29 };
	std::vector<int> fifth(myints, myints + sizeof(myints) / sizeof(int));

	std::cout << "The contents of fifth are:";
	for (std::vector<int>::iterator it = fifth.begin(); it != fifth.end(); ++it)
		std::cout << ' ' << *it;
	std::cout << '\n';

	system("pause");
	return 0;
}


operator= 

<span style="font-family:Microsoft YaHei;font-size:24px;">	std::vector<int> foo(3, 0);
	std::vector<int> bar(5, 0);

	bar = foo;//用foo赋值给bar,bar会变成和foo一样
	foo = std::vector<int>();//再用一个无参的赋值给foo
</span>

begin():指向第一个元素

end():指向最后一个元素的下一个元素

rebegin():

<span style="font-family:Microsoft YaHei;font-size:24px;">//rebegin()
#include <iostream>
#include <vector>

int main()
{
	std::vector<int> myvector(5);  // 构造大小为5,默认值为0的vector

	int i = 0;
	//因为是逆向迭代器,所以从最后进行赋值,最后一个为1(前置++),第一个为5
	std::vector<int>::reverse_iterator rit = myvector.rbegin();
	for (; rit != myvector.rend(); ++rit)
		*rit = ++i;

	std::cout << "myvector contains:";
	for (std::vector<int>::iterator it = myvector.begin(); it != myvector.end(); ++it)
		std::cout << ' ' << *it;
	std::cout << '\n';
	system("pause");
	return 0;
}</span>

rend(): 逆向迭代器,指向第一个元素

cbegin()/cend(): C++11标准,意味const_iterator

crbegin()/crend() :C++11标准,意味const类型的反向迭代器


resize():

<span style="font-family:Microsoft YaHei;font-size:24px;">// resizing vector
#include <iostream>
#include <vector>

int main()
{
	std::vector<int> myvector;

	// set some initial content:
	for (int i = 1; i<10; i++)
		myvector.push_back(i);//push_back,结果为1,2,3,4,5,6,7,8,9

	myvector.resize(5);//重新调整大小为5,直接截取前五个数据
	myvector.resize(8, 100);//重新调整,后三个数据用100填充
	myvector.resize(12);//重新调整,后四个用默认数据0填充

	std::cout << "myvector contains:";
	for (int i = 0; i<myvector.size(); i++)
		std::cout << ' ' << myvector[i];
	std::cout << '\n';
	system("pause");
	return 0;
}</span>


reserve:重新开辟空间,指定容器的大小,resize()修改的有效数据的个数

push_back()/pop_back() :插入和删除数据



insert():

<span style="font-family:Microsoft YaHei;font-size:24px;">
// inserting into a vector
#include <iostream>
#include <vector>

int main()
{
	std::vector<int> myvector(3, 100);
	std::vector<int>::iterator it;

	it = myvector.begin();
	it = myvector.insert(it, 200);//头插入

	myvector.insert(it, 2, 300);//在头结点插入两个300

	// "it" no longer valid, get a new one:
	it = myvector.begin();

	std::vector<int> anothervector(2, 400);//另一个vector
	myvector.insert(it + 2, anothervector.begin(), anothervector.end());
	//从下标为2的地方开始,进行插入
	int myarray[] = { 501, 502, 503 };
	myvector.insert(myvector.begin(), myarray, myarray + 3);//头插入3个数据

	std::cout << "myvector contains:";
	for (it = myvector.begin(); it<myvector.end(); it++)
		std::cout << ' ' << *it;
	std::cout << '\n';
	system("pause");
	return 0;
}</span>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值