码迷,mamicode.com
首页 > 其他好文 > 详细

STL vector的使用(一)

时间:2015-08-21 11:25:00      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:stl   vector   c++   

一. vector介绍:

    vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。

二. 使用介绍:

1. 为了可以使用vector,必须在你的头文件中包含下面的代码:

<span style="font-family: SimSun;"><span style="font-size:14px;">#include <vector></span></span>
2. vector属于std命名域的,因此需要通过命名限定,如下完成你的代码:

<span style="font-family: SimSun;"><span style="font-size:14px;">using std::vector;
vector<int> vInts;</span></span>
或者连在一起,使用全名:

<span style="font-family: SimSun;"><span style="font-size:14px;">std::vector<int> vInts;</span></span>

三. Vector成员函数(Vector Member Functions):

Function
Description
assign Erases a vector and copies the specified elements to the empty vector.
1. c.assign(beg,end):[beg; end)区间中的数据赋值给c
2. c.assign(n,elem):将n个elem的拷贝赋值给c。
at Returns a reference to the element at a specified location in the vector.
1. c.at(idx):传回索引idx所指的数据,如果idx越界,抛出out_of_range。
back Returns a reference to the last element of the vector.
传回最后一个数据,不检查这个数据是否存在。
begin

Returns a random-access iterator to the first element in the container.
传回迭代器的第一个数据。
capacity Returns the number of elements that the vector could contain without allocating more storage.
返回容器中数据个数。
clear Erases the elements of the vector.
移除容器中所有数据。
empty Tests if the vector container is empty.
判断容器是否为空。
end Returns a random-access iterator that points just beyond the end of thevector.
指向迭代器中的最后一个数据地址。
erase Removes an element or a range of elements in a vector from specified positions.
1. c.erase(pos):  删除pos位置的数据,传回下一个数据的位置。
2. c.erase(beg,end):删除[beg,end)区间的数据,传回下一个数据的位置。
front Returns a reference to the first element in a vector.
传回第一个数据。
get_allocator Returns an object to the allocator class used by a vector.
使用构造函数返回一个拷贝。
insert Inserts an element or a number of elements into the vector at a specified position.
1. c.insert(pos,elem):在pos位置插入一个elem拷贝,传回新数据位置。
2. c.insert(pos,n,elem):在pos位置插入n个elem数据。无返回值。
3. c.insert(pos,beg,end):在pos位置插入在[beg,end)区间的数据。无返回值。
max_size Returns the maximum length of the vector.
返回容器中最大数据的数量。
pop_back Deletes the element at the end of the vector.
删除最后一个数据。
push_back Adds an element to the end of the vector.
在尾部加入一个数据
rbegin Returns an iterator to the first element in a reversed vector.
传回一个逆向队列的第一个数据。
rend
Returns an iterator to the end of a reversed vector.
传回一个逆向队列的最后一个数据的下一个位置。
resize Specifies a new size for a vector.
重新指定队列的长度。
reserve Reserves a minimum length of storage for a vector object.
保留适当的容量。
size Returns the number of elements in the vector.
返回容器中实际数据的个数。
swap Exchanges the elements of two vectors.
1. c1.swap(c2) 
2. swap(c1,c2)
都是将c1和c2元素互换。
vector Constructs a vector of a specific size or with elements of a specific value or with a specific allocator or as a copy of some other vector.


四. Vector操作符(Vector Operators):

Operator
Description
operator[] Returns a reference to the vector element at a specified position.

五. 构建Vector(Constructing a Vector)

1. Construct an empty vector to hold objects of type Widget

vector<Widget> vWidgets;
//     ------
//      |
//      |- Since vector is a container, its member functions
//         operate on iterators and the container itself so 
//         it can hold objects of any type.

2. Construct a vector to hold 500 Widgets:

vector<Widget> vWidgets(500);

3. Construct a vector to hold 500 Widgets initialized to 0:

vector<Widget> vWidgets(500, Widget(0));

4. Construct a vector of Widgets from another vector of Widgets:

<span style="font-size:14px;">vector<Widget> vWidgetsFromAnother(vWidgets);</span>


六. 向vector添加数据:

for(int i= 0;i<10; i++)
    vWidgets.push_back(Widget(i));


七. 获取元素的个数:

很多时候我们不必要知道vector里面有多少数据,vector里面的数据是动态分配的,使用push_back()的一系列分配空间常常决定于文件或一些数据源。如果你想知道vector存放了多少数据,你可以使用empty()。获取vector的大小,可以使用size()。例如,如果你想获取一个vector v的大小,但不知道它是否为空,或者已经包含了数据,如果为空想设置为-1,你可以使用下面的代码实现:

int nSize = v.empty() ? -1 : static_cast<int>(v.size());


八. 访问vector中的数据

1 vector::at()
2 vector::operator[]

vector<int> v;
v.reserve(10);


for(int i=0; i<7; i++)
    v.push_back(i);


try
{
 int iVal1 = v[7];  // not bounds checked - will not throw
 int iVal2 = v.at(7); // bounds checked - will throw if out of range
}
catch(const exception& e)
{
 cout << e.what();
}

技术分享



版权声明:本文为博主原创文章,未经博主允许不得转载。

STL vector的使用(一)

标签:stl   vector   c++   

原文地址:http://blog.csdn.net/u013354805/article/details/47829349

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!