C++中vector的用法详解

简介: c++中vector的用法详解vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的.1.头文件#include.2.变量声明:        2.1 例:声明一个int向量以替代一维的数组:vector a;(等于声明了一个int数组a[],大小没有指定,可以动态的向里面添加删除)。
vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的.
1.头文件#include.
2.变量声明:
        2.1 例:声明一个int向量以替代一维的数组:vector a;(等于声明了一个int数组a[],大小没有指定,可以动态的向里面添加删除)。
        2.2 例:用vector代替二维数组.其实只要声明一个一维数组向量即可,而一个数组的名字其实代表的是它的首地址,所以只要声明一个地址的向量即可,即:vector  a.同理想用向量代替三维数组也是一样,vector a;再往上面依此类推.
  3. 详细的函数实现功能:其中vector ve.
           ve.clear()         清空容器中所有数据。
           ve.empty()         判断容器是否为空。
           ve.erase(pos)        删除pos位置的数据
        ve.erase(beg,end) 删除[beg,end)区间的数据
           ve.front()         传回第一个数据。
ve.back() 传回最后一个数据,不检查这个数据是否存在
           ve.insert(pos,elem)  在pos位置插入一个elem拷贝
           ve.pop_back()     删除最后一个数据。
           ve.push_back(elem) 在尾部加入一个数据。
           ve.resize(num)     重新设置该容器的大小
           ve.size()         回容器中实际数据的个数。
           ve.begin()           返回指向容器第一个元素的迭代器
          ve.end()             返回指向容器最后一个元素的迭代器
ve.reserve()     改变当前vecotr所分配空间的大小
ve.capacity() 容器容量
ve.at(idx)传回索引idx所指的数据,如果idx越界,抛出out_of_range
ve.assign(beg,end):将[beg; end)区间中的数据赋值给ve
        ve.assign(n,elem):将n个elem的拷贝赋值给ve
ve.~ vector () 销毁所有数据,释放内存
4.函数实现举例:
假定你想建立一个容纳1-1000值的vector
4.1
vector v;
for (int i = 1; i <= 1000; ++i)
v.push_back(i);
在大多数STL实现中,这段代码在循环过程中将会导致2到10次重新分配。
4.2
vector v;
v.reserve(1000); //使用reserve()函数提前设定容量大小
for (int i = 1; i <= 1000; ++i)
v.push_back(i);
这在循环中不会发生重新分配。
4.使用下标访问元素
cout<
5.使用迭代器访问元素
vector::iterator it; //用来遍历或者指向容器里面的元素
for(it=ve.begin();it!=ve.end();it++)
{
cout<<*it<
}
6.插入和删除元素
 ve.insert(ve.begin()+i,a); 在第i+1个元素前面插入a;
ve.erase(ve.begin()+2); 删除第3个元素
ve.erase(ve.begin()+i,ve.end()+j); 删除区间[i,j-1]; 区间从0开始
相关文章
|
15天前
|
存储 安全 编译器
第二问:C++中const用法详解
`const` 是 C++ 中用于定义常量的关键字,主要作用是防止值被修改。它可以修饰变量、指针、函数参数、返回值、类成员等,确保数据的不可变性。`const` 的常见用法包括:
58 0
|
2月前
|
存储 C++ 容器
【C++】map、set基本用法
本文介绍了C++ STL中的`map`和`set`两种关联容器。`map`用于存储键值对,每个键唯一;而`set`存储唯一元素,不包含值。两者均基于红黑树实现,支持高效的查找、插入和删除操作。文中详细列举了它们的构造方法、迭代器、容量检查、元素修改等常用接口,并简要对比了`map`与`set`的主要差异。此外,还介绍了允许重复元素的`multiset`和`multimap`。
33 3
【C++】map、set基本用法
|
2月前
|
存储 编译器 C语言
【c++丨STL】vector的使用
本文介绍了C++ STL中的`vector`容器,包括其基本概念、主要接口及其使用方法。`vector`是一种动态数组,能够根据需要自动调整大小,提供了丰富的操作接口,如增删查改等。文章详细解释了`vector`的构造函数、赋值运算符、容量接口、迭代器接口、元素访问接口以及一些常用的增删操作函数。最后,还展示了如何使用`vector`创建字符串数组,体现了`vector`在实际编程中的灵活性和实用性。
60 4
|
15天前
|
存储 对象存储 C++
C++ 中 std::array<int, array_size> 与 std::vector<int> 的深入对比
本文深入对比了 C++ 标准库中的 `std::array` 和 `std::vector`,从内存管理、性能、功能特性、使用场景等方面详细分析了两者的差异。`std::array` 适合固定大小的数据和高性能需求,而 `std::vector` 则提供了动态调整大小的灵活性,适用于数据量不确定或需要频繁操作的场景。选择合适的容器可以提高代码的效率和可靠性。
38 0
|
15天前
|
C++
第十三问:C++中静态变量的用法有哪些?
本文介绍了 C++ 中静态变量和函数的用法及原理。静态变量包括函数内的静态局部变量和类中的静态成员变量,前者在函数调用间保持值,后者属于类而非对象。静态函数不能访问非静态成员,但可以通过类名直接调用。静态链接使变量或函数仅在定义文件内可见,避免命名冲突。
32 0
|
19天前
|
存储 编译器 C语言
【c++丨STL】vector模拟实现
本文深入探讨了 `vector` 的底层实现原理,并尝试模拟实现其结构及常用接口。首先介绍了 `vector` 的底层是动态顺序表,使用三个迭代器(指针)来维护数组,分别为 `start`、`finish` 和 `end_of_storage`。接着详细讲解了如何实现 `vector` 的各种构造函数、析构函数、容量接口、迭代器接口、插入和删除操作等。最后提供了完整的模拟实现代码,帮助读者更好地理解和掌握 `vector` 的实现细节。
29 0
|
3月前
|
存储 C++ 索引
【C++打怪之路Lv9】-- vector
【C++打怪之路Lv9】-- vector
27 1
|
3月前
|
安全 测试技术 C++
【C++篇】从零实现 C++ Vector:深度剖析 STL 的核心机制与优化2
【C++篇】从零实现 C++ Vector:深度剖析 STL 的核心机制与优化
78 6
|
3月前
|
安全 测试技术 C++
【C++篇】从零实现 C++ Vector:深度剖析 STL 的核心机制与优化1
【C++篇】从零实现 C++ Vector:深度剖析 STL 的核心机制与优化
96 7
|
3月前
|
编译器 C++
【C++】—— vector模拟实现
【C++】—— vector模拟实现