在C++中,std::vector
的拷貝構(gòu)造函數(shù)用于創(chuàng)建一個(gè)新的vector
對(duì)象,這個(gè)新對(duì)象是已存在vector
對(duì)象的一個(gè)副本??截悩?gòu)造函數(shù)的工作原理如下:
分配足夠的內(nèi)存空間:拷貝構(gòu)造函數(shù)首先為新的vector
對(duì)象分配足夠的內(nèi)存空間,以容納原始vector
對(duì)象中的所有元素。
復(fù)制元素:接下來,拷貝構(gòu)造函數(shù)遍歷原始vector
對(duì)象中的每個(gè)元素,并將其復(fù)制到新的vector
對(duì)象中。這里使用的是元素類型的拷貝構(gòu)造函數(shù)或賦值操作符。
設(shè)置新的vector
對(duì)象的屬性:拷貝構(gòu)造函數(shù)還會(huì)設(shè)置新的vector
對(duì)象的一些屬性,例如元素?cái)?shù)量(size)、容量(capacity)等。
以下是一個(gè)簡(jiǎn)單的示例,展示了如何使用std::vector
的拷貝構(gòu)造函數(shù):
#include<iostream>
#include<vector>
int main() {
// 創(chuàng)建一個(gè)包含5個(gè)整數(shù)的vector
std::vector<int> vec1 = {1, 2, 3, 4, 5};
// 使用拷貝構(gòu)造函數(shù)創(chuàng)建vec1的副本
std::vector<int> vec2(vec1);
// 輸出vec2的元素
for (int num : vec2) {
std::cout<< num << " ";
}
return 0;
}
輸出結(jié)果:
1 2 3 4 5
在這個(gè)示例中,vec2
是通過拷貝構(gòu)造函數(shù)從vec1
創(chuàng)建的,包含了與vec1
相同的元素。