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 的部分数据:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwczX0xiRGZkRGZ0Xy9GbvNGL2EzXlpXazxSPNpWT4dnMhVnRXRWNk1mYoR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL0YDOyUDMwAjMxITOwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
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();
}
可以看出,将 temp 中的元素 -1,rawData 中的元素没有改变。