一. 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>
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 |
|
||
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 |
|
||
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.
vector<Widget> vWidgets(500);
vector<Widget> vWidgets(500, Widget(0));
<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());
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(); }
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/u013354805/article/details/47829349