C++ vector 容器介绍
C++的vector是标准库中常见的一种容器,使用起来非常方便,可以用来代替c++原本的数组。vector是种容器,类似数组一样,但它的size可以动态改变。vector的元素在内存中连续排列,这一点跟数组一样。由于vector是标准库中的类,在使用vector的时候我们需要包含标准库的头文件 < vector > 。
如果vector的元素类型是int,默认初始化为0;如果vector元素类型为string,则默认初始化为空字符串。
向量(Vector)是序列容器(Sequence Containers),表示可以改变大小的数组。
与数组(arrays)一样,向量对其元素使用连续的存储位置,这意味着也可以使用指向其元素的常规指针上的偏移量来访问其元素,并且与数组中的一样有效。但与数组不同,它们的大小可以动态变化,其存储由容器自动处理。
vector的文档std::vector_C++中文网
创建vector对象
std::vector<int> vec1; // 空的vector,数据类型为int
std::vector<int> vec2(4); // 4个值为0的vector
std::vector<int> vec3 (4,10); // 第一个参数是数目,第二个参数是要初始化的值,即4个值为10的vector [10 10 10 10]
std::vector<int> vec4 (vec3.begin(),vec3.end()); // [10 10 10 10]
std::vector<int> vec5 (vec3); // [10 10 10 10]
std::vector<int> vec6 = {10, 20, 30, 40}; // [10 20 30 40]
【说明
命名空间(namespace)是C++语言特别重要的特性,当第三方供应商提供的库时,为了避免与其他供应商或者用户定义的名字相冲突(命名空间污染),常常将库的内容放置在自己独立的命名空间中。C++标准库也定义了相应命名空间std。
C++标准库中的函数或者对象都是在命名空间std中定义的,所以我们要使用标准函数库中的函数或对象都要使用std来限定。
但若在使用
using namespace std;
告诉编辑器我们将要使用空间std中的函数或者对象,可以省略std::,如:
#include<iostream>
//using namespace std;
int main()
{
std::cout<<"hello world"<<std::endl; //cout<<"hello world"<<endl;
return 0;
}
】
vector常用的成员函数
(1)size()
size()是最常用的成员函数了,常用于vector的遍历和元素个数的查询
(2)push_back()
出了初始化以外,push_back()是vector最重要的修改函数了,复杂度为O(1),而insert()的复杂度为O(n),差距明显
(3)front()、back()
查询首元素和未元素,其实通过随机访问,v[0]、v[v.size()-1]是可以达到相同效果的,用front()和back()显得专业点
(4)begin()、end()
通常用来方便排序的,也可以用来遍历,但没必要,通过下标遍历更简单快捷,rbegin()、rend()则可以用来逆序排序
(5)insert()
insert (position, x );
insert (position, n, x );
insert (position, first, last );
插入新的元素,
第一个函数,在迭代器指定的位置前插入值为x的元素
第二个函数,在迭代器指定的位置前插入n个值为x的元素
第三个函数,在迭代器指定的位置前插入另外一个容器的一段序列迭代器first到last
复杂度很高,若非迫不得已不使用
(6)erase()
erase ( position );
erase (first, last );
删除元素或一段序列
同样地,复杂度很高,若非迫不得已不使用
待续