什么是Vector(面向c++向)

Vector

在C++中,vector是一个动态数组,它是C++标准模板库(STL)中的一个重要部分。vector可以看作是一个能够存放任意类型对象的动态数组,它能够自动增长以容纳更多的元素。

vector是一个类模板,因此它可以用来定义保存任何数据类型的动态数组。你可以使用vector<int>来定义一个保存整数的动态数组,或者使用vector<string>来定义一个保存字符串的动态数组。

vector的主要特性包括:

  1. 动态大小vector的大小可以根据需要自动增长或缩小。当向vector中添加元素时,如果当前存储空间不足,vector会自动分配更多的内存空间。同样,当从vector中删除元素时,如果内存空间过多,vector可能会释放一些内存。
  2. 连续存储vector的元素在内存中是连续存储的,因此可以通过下标来访问vector中的任何元素,这和普通数组类似。
  3. 随机访问:由于vector的元素是连续存储的,因此可以在常数时间内访问vector中的任何元素。
  4. 迭代器支持vector支持迭代器(iterator),这使得你可以使用STL中的算法来操作vector中的元素。

vector在C++编程中有许多应用场景,包括处理用户输入、读取文件数据、数学和科学计算、游戏开发、图形处理、缓冲区等。它提供了一种高效、可预测、可扩展的方式来存储和访问一组连续的数据。

迭代器(C++)

在C++中,迭代器(Iterator)是一种设计模式,它使得程序能够顺序地访问一个容器(如vectorlistsetmap等)中的各个元素,而又不需要了解该容器的底层表示。迭代器是一个对象,它知道如何遍历容器,并提供了一种方式来访问容器中的元素。

迭代器的主要操作包括:

  • *iter:解引用迭代器,返回迭代器当前指向的元素的引用。
  • iter->member:通过迭代器访问元素的成员,等同于(*iter).member
  • ++iter:将迭代器向前移动到下一个元素。
  • --iter:将迭代器向后移动到上一个元素(注意:不是所有的迭代器都支持这个操作)。
  • iter1 == iter2 和 iter1 != iter2:比较两个迭代器是否相等或不等。

C++ STL(标准模板库)中的容器都提供了迭代器接口,使得我们可以使用统一的方式来遍历和操作容器中的元素。

以下是一个使用vector和迭代器的简单示例:

#include <iostream>  
#include <vector>  
  
int main() {  
    std::vector<int> nums = {1, 2, 3, 4, 5};  
  
    // 获取vector的迭代器  
    std::vector<int>::iterator it;  
  
    // 遍历vector  
    for (it = nums.begin(); it != nums.end(); ++it) {  
        std::cout << *it << " ";  
    }  
  
    // 使用范围for循环(C++11及更高版本)  
    for (int num : nums) {  
        std::cout << num << " ";  
    }  
  
    return 0;  
}

 

在上面的示例中,我们首先定义了一个vector<int>并初始化了它。然后,我们获取了vector的迭代器,并使用它遍历vector中的元素。最后,我们还展示了如何使用范围for循环(基于迭代器的语法糖)来简化遍历过程。

注意:C++ STL中的迭代器通常分为五类,包括输入迭代器(Input Iterators)、输出迭代器(Output Iterators)、前向迭代器(Forward Iterators)、双向迭代器(Bidirectional Iterators)和随机访问迭代器(Random Access Iterators)。不同的容器提供的迭代器类型可能不同,它们支持的操作也可能有所不同。例如,vectorarray提供的是随机访问迭代器,而list提供的是双向迭代器。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值