您的位置:首页 > 其它

STL_vector使用

2016-07-03 23:26 302 查看
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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: