天天看点

C++ STL :vector动态数组可实现整体赋值vector可以实现整体赋值

vector 是 STL 库中很常用的工具,可以理解为一个动态数组。

vector可以实现整体赋值

普通的数组,比如 int 数组,只能通过索引一个元素一个元素的赋值,在有些情况下十分不便,但是今天在 coding 过程中惊喜的发现 vector 可以实现整体赋值。

struct sample{
    int id;
    double AC;      // 声波时差测井值
    double CNL;     // 中子
    double DEN;     // 补偿密度
    double GR;      // 放射性测井值
    double PE;      // 光电吸收截面子数
    double RLLD;    // 深侧向电阻率
    int LIMSTONE;
};
           
vector <struct sample> rawData;
           

至于 vector 变量 rawData 的赋值过程就不展示了,与本文无关,只展示一下 rawData 的部分数据:

C++ STL :vector动态数组可实现整体赋值vector可以实现整体赋值

rawData 中共包含1400个 struct sample 元素。

下面开始整体赋值:

vector <struct sample> temp = rawData;
           

赋值之后,temp 将存储 rawData 的全部1400条数据。

为了证明 vector 的整体赋值是真正的赋值而不是只将指向 rawData 的指针赋给 temp ,做了如下测试:

for ( int i=0; i<rawData.size(); i++){
        cout << temp[i].AC << "\t" << rawData[i].AC << endl;
        temp[i].AC -= 1;
        cout << temp[i].AC << "\t" << rawData[i].AC << endl;
        cin.get();
    }
           
C++ STL :vector动态数组可实现整体赋值vector可以实现整体赋值

可以看出,将 temp 中的元素 -1,rawData 中的元素没有改变。

继续阅读