用vector对象代替数组——使用数组初始化vector对象,vector的拷贝方式说明。

本文详细介绍了C++中数组与Vector之间的拷贝方法,包括初始化构造、assign、swap、insert等不同方式,并解释了如何利用Vector的特性简化数组拷贝过程。

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

在看到c++primer的第三章,3.5.2节练习时,碰到了一个问题如下:

将刚刚创建的数组拷贝给另一个数组。利用vector 重新写此程序完成类似的功能。

然后我就在网上寻找答案,同时也学习了很多拷贝的方法

 

一、初始化构造时拷贝

vector<int> tem(list);

这种拷贝相当于复制了list的内部数据,内容没有发生改变。

二、assign


vector<int> temlist;

temlist.assign(list.begin(), list.end());

和第一种的效果一样也是复制了一组数据。

三、利用sweap函数来交换,将空的对象与有数据存储的对象进行交换


vector<int> temlist;

temlist.swap(list);

此时telist内部数据为空的,相当于剪切的性质。

四、insert

vector<int> temlist;vector<int> temlist2;
temlist2.push_back(2);
temlist2.push_back(2);
temlist.insert(temlist.end(), temlist2.begin(), temlist2.end());

相当于将temlist2的数据全部添加到temlist的末尾中去。

下面是关于数组拷贝到一个对象中去的方法;

如型a[10]拷贝到一个vector的对象中去

经过各种的查找,我对于这种方式的总结如下:

在C++中,我们不能用数组直接初始化另一数组,而只能创建新的数组,然后显式的把原数组的元素逐个复制给新的数组。
按照C语言中的做法:

const size_t arry_size=6;
int int_arry[arry_size]={0,1,2,3,4,5};
int int_arry2[arry_size];
for(size_t ix=0;ix<arry_size;++i)       
    int_arry2[ix]=int_arry[i];

但是在c++中我们有vector的工具来使用

而使用数组初始化vector对象,可以直接利用一个vector对象来初始化另一个vector对象:

#include<iostream>
#include<vector>
using namespace std;
int main(){       
  //使用数组初始化vector对象               
     const size_t arr_size=6;              
     int int_arr[arr_size]={0,1,2,3,4,5};               
     vector<int>ivec(int_arr,int_arr+arr_size);

传递给ivec的两个指针标出了vector初值的范围。第二个指针指向被复制的最后一个元素之后的地址空间。(圈重点!!!!)

所以我的问题就迎刃而解了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值