vector的定义

**

1. vector的定义:

**

为了使用vector,我们必须包含的头文件:
#include <vector>

使用vector有两种不同的形式:

  • 数组习惯
  • STL习惯

对于数组习惯

*

我们模仿内置数组的方法:定义一个已知长度的vector:

 vector<int> ivec(10);  //类似于定义包含十个元素的内置数组一样:int ia[10]

还可以为每个元素提供一个显式的初始值来完成初始化:

 vector<int> ivec2(10, -1);

定义了ivec2,包含十个int型的元素,每个元素都被初始化为-1.

对于内置数组,我们可以显示地把数组的元素初始化为一组常量值:

    int ia[6] = {-2, -1, 0, 1, 2, 1024};

但是,我们不能用同样的方法显式地初始化vector。不过,可以将vector初始化为一个已有数组的全部或者一部分;只需指定希望被用来初始化vector的数组的开始地址以及数组最末元素的下一位置来实现:

    vector<int> ivec3(ia, ia+6);//把ia的6个元素拷贝到ivec3

被传递给ivec3的两个指针标记了用来初始化对象值的范围。第二个指针总是指向要被拷贝的末元素的下一个位置,标记出来的元素范围也可以是数组的一个子集。例如:

    vector<int> ivec4(&ia[2], &ia[5]); //拷贝3个元素: ia[2], ia[3], ia[4]

与内置数组不同,vector可以被另一个vector初始化,或者被赋给另一个vector;例如:

    vector<int> ivec5(ivec4);//用ivec4初始化ivec5
    ivec4 = ivec5;//把一个vector拷贝给另一个vector

**

对于STL习惯:

**

用法完全不同,我们不是定义一个已知大小的vector,而是定义一个空vector。

例如:

    vector<string> text;
### 关于 `std::vector` 的定义C++ 标准模板库(STL)中,`std::vector` 是一种动态数组数据结构[^3]。它提供了随机访问的能力,并允许在其末尾高效地添加或删除元素。以下是关于其定义的一些重要细节: #### 构造函数 `std::vector` 支持多种形式的构造方法,具体如下: - **无参构造**:创建一个空的 `std::vector` 对象。 ```cpp std::vector<int> v1; ``` - **指定大小和初始值**:可以初始化具有固定数量元素的向量,其中所有元素都设置为相同的默认值。 ```cpp std::vector<int> v2(10, 0); // 创建包含 10 个整数 0 的向量 ``` - **通过迭代器范围构造**:可以通过两个输入迭代器之间的范围来初始化一个新的向量。 ```cpp std::vector<int> v3(v2.begin(), v2.end()); // 将 v2 中的所有元素复制到 v3 ``` #### 迭代器支持 为了方便遍历和操作 `std::vector` 中的元素,标准库为其提供了一组专门设计的迭代器类型[^1]。这些迭代器主要包括: - **正向迭代器 (`iterator`)** - **常量正向迭代器 (`const_iterator`)** 内部实现上,这两种迭代器通常基于 GNU C++ 库中的 `_normal_iterator` 类型定义[^2]。 下面是一个简单的例子展示如何利用迭代器遍历整个 `std::vector`: ```cpp #include <iostream> #include <vector> int main() { std::vector<int> vec = {1, 2, 3, 4, 5}; for (std::vector<int>::iterator it = vec.begin(); it != vec.end(); ++it) { std::cout << *it << " "; } std::cout << std::endl; return 0; } ``` 此程序会依次打印出向量内的每一个数值。 --- ### 总结 综上所述,`std::vector` 不仅具备传统静态数组的功能特性,还额外增加了灵活性以及安全性保障机制。它的核心优势在于能够自动管理内存分配并简化复杂的数据处理流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值