STL容器中 vector(动态数组)的增删改查

    C++标准模板库(STL)中的容器是编程中非常重要的部分,它们用于存储数据元素集合。以下是STL中最常用的容器vector动态数组的详细介绍:

vector(动态数组)

  vector是一个能够存储任意类型对象的序列容器,可以动态地增长和缩小。它提供随机访问迭代器,因此可以高效地访问容器中的任意元素。

        以下是vector的C++代码简单实现:

#include   
#include   
using namespace std;
int main() { 
 
	//定义一个int类型的动态数组vec 
    vector vec;  
  
    // 向vector中添加元素 
	int a,b,c;
	cin >> a >> b >> c;
    vec.push_back(a);  
    vec.push_back(b);  
    vec.push_back(c);  
  
    // 访问vector中的元素  
    cout << "第一个元素: " << vec[0] << endl;  
  
    // 遍历vector  
    for (int i = 0; i < vec.size(); ++i) {  
        cout << "元素 " << i << ": " << vec[i] << endl;  
    }  
  
    return 0;  
}

        以下是插入和删除 vector 中元素的基本方法:

插入元素

  1. 使用 push_back()

    push_back() 成员函数在 vector 的末尾插入一个新的元素,并增加 vector 的大小。

    vector vec;  
    vec.push_back(10); // vec 变为 {10}  
    vec.push_back(20); // vec 变为 {10, 20}
  2. 使用 insert()

    insert() 成员函数提供了更多的灵活性,它可以在 vector 的指定位置插入一个或多个元素。它需要两个参数:一个迭代器,指定插入位置;以及要插入的元素或元素的范围。

    vector vec = {10, 20};  
    vec.insert(vec.begin() + 1, 15); // vec 变为 {10, 15, 20}  
    
    // 插入一个元素范围  
    vector more_elements = {30, 40};  
    vec.insert(vec.end(), more_elements.begin(), more_elements.end());  
    // vec 变为 {10, 15, 20, 30, 40}

    注意,insert() 可能会导致重新分配 vector 的内部存储空间,以容纳更多的元素,这可能会影响性能(特别是当 vector 很大时)。

删除元素

  1. 使用 pop_back()

    pop_back() 成员函数移除 vector 的最后一个元素,并减少 vector 的大小。

    vector vec = {10, 20, 30};  
    vec.pop_back(); // vec 变为 {10, 20}
  2. 使用 erase()

    erase() 成员函数移除 vector 中的一个或多个元素。它需要一个迭代器(或迭代器范围),指定要删除的元素。

    vector vec = {10, 20, 30, 40, 50};  
    vec.erase(vec.begin() + 2); // 删除第三个元素(值为30),vec 变为 {10, 20, 40, 50}  
    
    // 删除一个元素范围  
    vec.erase(vec.begin() + 1, vec.begin() + 3); // 删除第二个和第三个元素,vec 变为 {10, 50}

  3. 使用 clear()

    clear() 成员函数移除 vector 中的所有元素,使其大小变为 0。但它不会改变 vector 的容量(即内部存储空间的大小)。

    vector vec = {10, 20, 30};  
    vec.clear(); // vec 变为空

        这些是 vector 中插入和删除元素的基本方法。在使用这些方法时,请注意它们对 vector 大小、容量和迭代器有效性的影响。

修改vector中的元素

要修改 vector 中的元素,可以直接通过下标(索引)访问该元素,并对其赋值。下标从0开始。

#include   
#include   
using namespace std;
int main() {  
    vector vec = {1, 2, 3, 4, 5};  
  
    // 修改第三个元素(索引为2)  
    vec[2] = 10;  
  
    // 输出修改后的vector  
    for (int i = 0; i < vec.size(); ++i) {  
        cout << vec[i] << " ";  
    }  
    // 输出:1 2 10 4 5  
  
    return 0;  
}

遍历vector中的元素

遍历 vector 中的元素可以通过多种方式完成,包括使用下标、迭代器等。

使用下标

这种方法在上面的例子中已经展示过了。它适用于你知道要遍历的元素的数量或范围时。

使用迭代器

迭代器提供了一种通用的方法来访问容器中的元素,而不需要关心容器的具体实现。

#include   
#include   
  
int main() {  
    vector vec = {1, 2, 3, 4, 5};  
  
    // 使用迭代器遍历vector  
    for (std::vector::iterator it = vec.begin(); it != vec.end(); ++it) {  
        std::cout << *it << " ";  
    }  
    // 输出:1 2 3 4 5  
  
    return 0;  
}

你可能感兴趣的:(c++,开发语言)