c++之修改vector中的元素

本文通过一个具体的C++示例介绍了如何在程序中修改vector容器中的元素,并演示了使用引用与非引用方式修改vector最后一个元素的区别。实验结果显示,通过引用修改容器中的元素会直接影响容器内的数据,而非引用方式则不会。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

c++之修改vector中的元素
#include <iostream>  
#include <windows.h>  
#include <math.h>  
#include <cstdio>  
#include <cstring>  
#include <vector>  
  
using namespace std;  
  
void vector_out(vector<int> &vector_in)  
{  
    for (unsigned int i = 0;i<vector_in.size();i++)  
    {  
        if (i == vector_in.size()-1)  
        {  
            cout<<vector_in[i]<<endl;  
        }  
        else  
            cout<<vector_in[i]<<',';  
    }  
      
}  
  
int main()  
{  
    string s("a2cdefghijklmn");  
    vector<int> abc(10);   
    if(abc.begin()!=abc.end())  
    {  
        for (unsigned int i = 0;i<abc.size();i++)  
        {  
            abc[i] = i+1;  
        }  
        cout<<"原始数据:"<<endl;  
        vector_out(abc);  
        auto &val2 = abc.back(); //val2为指向最后一个元素的引用  
        val2 = 2;  
        cout<<"变量为引用类型,修改后:"<<endl;  
        vector_out(abc);  
  
        auto val3 = abc.back();//仅是abc.back()的一个拷贝  
        val3 = 10;  
        cout<<"变量不是一个引用,修改无效:"<<endl;  
        vector_out(abc);  
    }  
    cin.get();  
    return 0;  
}

运行结果:


### 如何在C++修改vector容器中的元素值 在C++中,`std::vector` 提供了多种方法来访问和修改其内部存储的元素。以下详细说明如何实现这一操作,并附带示例代码。 #### 使用 `operator[]` 修改元素 通过索引操作符 `operator[]` 可以直接访问并修改 `std::vector` 中的元素。此方法适用于随机访问场景,且效率较高,因为它是基于数组实现的[^1]。 ```cpp #include <iostream> #include <vector> int main() { std::vector<int> vec = {1, 2, 3, 4, 5}; vec[2] = 10; // 修改索引为2的元素值为10 std::cout << "Modified element at index 2: " << vec[2] << std::endl; // 输出10 return 0; } ``` #### 使用 `at()` 方法修改元素 `at()` 方法与 `operator[]` 类似,但它提供了范围检查功能。如果索引超出有效范围,则会抛出 `std::out_of_range` 异常[^1]。 ```cpp #include <iostream> #include <vector> int main() { std::vector<int> vec = {1, 2, 3, 4, 5}; try { vec.at(2) = 10; // 修改索引为2的元素值为10 std::cout << "Modified element at index 2: " << vec.at(2) << std::endl; // 输出10 } catch (const std::out_of_range& e) { std::cerr << "Error: " << e.what() << std::endl; } return 0; } ``` #### 使用迭代器修改元素 可以通过迭代器访问 `std::vector` 的元素,并对其进行修改。这种方法特别适合在遍历过程中动态修改元素[^3]。 ```cpp #include <iostream> #include <vector> int main() { std::vector<int> vec = {1, 2, 3, 4, 5}; for (auto it = vec.begin(); it != vec.end(); ++it) { if (*it == 3) { *it = 10; // 将值为3的元素修改为10 } } for (const auto& elem : vec) { std::cout << elem << ' '; // 输出1 2 10 4 5 } return 0; } ``` #### 使用 `assign` 方法批量修改元素 `assign` 方法可以用于重新分配整个 `std::vector` 的内容,或者替换部分元素[^2]。 ```cpp #include <iostream> #include <vector> int main() { std::vector<int> vec = {1, 2, 3, 4, 5}; vec.assign(5, 10); // 将vec重新赋值为包含5个10的向量 for (const auto& elem : vec) { std::cout << elem << ' '; // 输出10 10 10 10 10 } return 0; } ``` #### 注意事项 - 在修改元素之前,确保 `std::vector` 已经被正确初始化并且包含足够的元素。 - 如果需要删除或插入元素,可以使用 `erase` 或 `insert` 成员函数[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值