C++重新入门-vector容器

本文详细介绍了C++标准库中的std::vector容器,涵盖动态数组、创建方法(包括默认构造、初始化列表、拷贝构造和范围构造)、元素访问、大小与容量、插入和删除操作,以及遍历和其它实用功能的使用。
摘要由CSDN通过智能技术生成

目录

1.动态数组:

2.头文件和命名空间:

3.创建和初始化:

使用默认构造函数创建空的std::vector:

使用初始化列表初始化std::vector:

使用拷贝构造函数:

使用范围构造函数:

使用重复值初始化std::vector:

4.访问元素:

5.大小和容量:

获取元素数量(大小):

获取容器内部存储空间的大小(容量):

6.插入和删除元素:

在末尾插入元素:

删除末尾元素:

在指定位置插入元素:

删除指定位置的元素:

7. 遍历:

1. 使用循环遍历:

2. 使用范围-based for 循环遍历:

3. 使用迭代器遍历:

8.其他操作

1. 清空容器:

2. 交换容器:

3. 访问首尾元素:

9.总结


在C++中,std::vector是一个标准库中的容器,它提供了动态数组的功能,可以存储任意类型的元素,并且能够动态增长。以下是关于std::vector容器的详细解释:

1.动态数组:

std::vector提供了一个动态大小的数组,可以根据需要动态地增加或减少元素的数量。这使得std::vector比C-style数组更加灵活和易于使用。

2.头文件和命名空间:

要使用std::vector,需要包含头文件 <vector>,并使用命名空间std

#include <vector>
using namespace std;

3.创建和初始化:

使用默认构造函数创建空的std::vector

#include <vector>

int main() {
    std::vector<int> myVector; // 创建一个空的vector
    return 0;
}

使用初始化列表初始化std::vector

#include <vector>

int main() {
    std::vector<int> myVector = {1, 2, 3, 4, 5}; // 使用初始化列表初始化vector
    return 0;
}

使用拷贝构造函数:

#include <vector>

int main() {
    std::vector<int> originalVector = {1, 2, 3, 4, 5}; // 原始vector
    std::vector<int> myVector(originalVector); // 使用拷贝构造函数创建新的vector
    return 0;
}

使用范围构造函数:

#include <vector>

int main() {
    std::vector<int> originalVector = {1, 2, 3, 4, 5}; // 原始vector
    std::vector<int> myVector(originalVector.begin(), originalVector.begin() + 3); // 使用范围构造函数创建新的vector
    return 0;
}

使用重复值初始化std::vector

#include <vector>

int main() {
    std::vector<int> myVector(5, 10); // 创建包含5个重复值为10的元素的vector
    return 0;
}

4.访问元素:

访问 std::vector 中的元素可以使用下标操作符[]或者 at() 方法。下面是这两种方法的示例:

#include <iostream>
#include <vector>

int main() {
    std::vector<int> myVector = {10, 20, 30, 40, 50};

    // 使用下标操作符访问元素
    std::cout << "First element: " << myVector[0] << std::endl;
    std::cout << "Second element: " << myVector[1] << std::endl;

    // 使用 at() 方法访问元素
    std::cout << "Third element: " << myVector.at(2) << std::endl;
    std::cout << "Fourth element: " << myVector.at(3) << std::endl;

    return 0;
}

请注意,at() 方法提供了边界检查,如果尝试访问超出 std::vector 界限的元素,将会抛出 std::out_of_range 异常,而使用下标操作符 [] 则不会进行边界检查,可能导致访问越界。因此,在不确定索引是否有效的情况下,最好使用 at() 方法进行访问。

5.大小和容量:

在C++中,std::vector 提供了 size()capacity() 方法来获取容器中元素的数量和容器内部存储空间的大小。

获取元素数量(大小):

#include <iostream>
#include <vector>

int main() {
    std::vector<int> myVector = {10, 20, 30, 40, 50};

    // 使用 size() 方法获取元素数量
    std::cout << "Size of vector: " << myVector.size() << std::endl;

    return 0;
}

获取容器内部存储空间的大小(容量):

#include <iostream>
#include <vector>

int main() {
    std::vector<int> myVector = {10, 20, 30, 40, 50};

    // 使用 capacity() 方法获取容器内部存储空间的大小
    std::cout << "Capacity of vector: " << myVector.capacity() << std::endl;

    return 0;
}

size() 方法返回的是容器中当前元素的数量,而 capacity() 方法返回的是容器内部实际分配的存储空间大小。通常情况下,size() 小于或等于 capacity(),因为 std::vector 会预分配一些额外的存储空间,以避免频繁的动态内存分配和释放,提高性能。

6.插入和删除元素:

在 C++ 中,std::vector 提供了多种方法来插入和删除元素,包括在容器的末尾插入和删除元素,以及在任意位置插入和删除元素。

在末尾插入元素:

#include <iostream>
#include <vector>

int main() {
    std::vector<int> myVector = {10, 20, 30};

    // 在容器的末尾插入元素
    myVector.push_back(40);

    // 输出容器中的元素
    for (int elem : myVector) {
        std::cout << elem << " ";
    }
    std::cout << std::endl;

    return 0;
}

删除末尾元素:

#include <iostream>
#include <vector>

int main() {
    std::vector<int> myVector = {10, 20, 30, 40};

    // 删除容器的末尾元素
    myVector.pop_back();

    // 输出容器中的元素
    for (int elem : myVector) {
        std::cout << elem << " ";
    }
    std::cout << std::endl;

    return 0;
}

在指定位置插入元素:

#include <iostream>
#include <vector>

int main() {
    std::vector<int> myVector = {10, 20, 30};

    // 在容器的指定位置插入元素
    myVector.insert(myVector.begin() + 1, 15);

    // 输出容器中的元素
    for (int elem : myVector) {
        std::cout << elem << " ";
    }
    std::cout << std::endl;

    return 0;
}

删除指定位置的元素:

#include <iostream>
#include <vector>

int main() {
    std::vector<int> myVector = {10, 20, 30};

    // 删除容器的指定位置的元素
    myVector.erase(myVector.begin() + 1);

    // 输出容器中的元素
    for (int elem : myVector) {
        std::cout << elem << " ";
    }
    std::cout << std::endl;

    return 0;
}

以上就是使用 std::vector 插入和删除元素的一些常见方法。通过这些方法,可以方便地在 std::vector 中进行元素的增加和删除操作。

7. 遍历:

在 C++ 中,可以使用循环或迭代器来遍历 std::vector 中的元素。

1. 使用循环遍历:

#include <iostream>
#include <vector>

int main() {
    std::vector<int> myVector = {10, 20, 30, 40, 50};

    // 使用 for 循环遍历
    for (size_t i = 0; i < myVector.size(); ++i) {
        std::cout << myVector[i] << " ";
    }
    std::cout << std::endl;

    return 0;
}

2. 使用范围-based for 循环遍历:

#include <iostream>
#include <vector>

int main() {
    std::vector<int> myVector = {10, 20, 30, 40, 50};

    // 使用范围-based for 循环遍历
    for (int elem : myVector) {
        std::cout << elem << " ";
    }
    std::cout << std::endl;

    return 0;
}

3. 使用迭代器遍历:

#include <iostream>
#include <vector>

int main() {
    std::vector<int> myVector = {10, 20, 30, 40, 50};

    // 使用迭代器遍历
    for (auto it = myVector.begin(); it != myVector.end(); ++it) {
        std::cout << *it << " ";
    }
    std::cout << std::endl;

    return 0;
}

以上是三种常见的遍历 std::vector 的方法。无论是使用循环、范围-based for 循环,还是使用迭代器,都可以方便地遍历 std::vector 中的元素,并根据需要进行操作。

8.其他操作

除了插入、删除和遍历元素之外,std::vector 还提供了其他一些常用的操作,例如清空容器、交换容器、访问首尾元素等。

1. 清空容器:

使用 clear() 方法可以清空 std::vector 中的所有元素。

#include <iostream>
#include <vector>

int main() {
    std::vector<int> myVector = {10, 20, 30, 40, 50};

    // 清空容器
    myVector.clear();

    std::cout << "Vector size after clear: " << myVector.size() << std::endl; // 输出:0

    return 0;
}

2. 交换容器:

使用 swap() 方法可以交换两个 std::vector 容器的内容。

#include <iostream>
#include <vector>

int main() {
    std::vector<int> myVector1 = {1, 2, 3};
    std::vector<int> myVector2 = {4, 5, 6};

    // 交换两个容器的内容
    myVector1.swap(myVector2);

    // 输出交换后的容器内容
    std::cout << "myVector1: ";
    for (int elem : myVector1) {
        std::cout << elem << " ";
    }
    std::cout << std::endl;

    std::cout << "myVector2: ";
    for (int elem : myVector2) {
        std::cout << elem << " ";
    }
    std::cout << std::endl;

    return 0;
}

3. 访问首尾元素:

使用 front() 方法可以访问 std::vector 中的第一个元素,使用 back() 方法可以访问最后一个元素。

#include <iostream>
#include <vector>

int main() {
    std::vector<int> myVector = {10, 20, 30, 40, 50};

    // 访问首尾元素
    std::cout << "First element: " << myVector.front() << std::endl; // 输出:10
    std::cout << "Last element: " << myVector.back() << std::endl;   // 输出:50

    return 0;
}

以上是一些常见的 std::vector 其他操作方法。通过这些方法,可以更方便地操作和管理 std::vector 容器。

9.总结

  • 21
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值