簡體   English   中英

C ++初始化向量

[英]C++ initialization of vector

任何人都可以向我解釋為什么我們可以這樣初始化矢量? int a[]={1,2,3,4,5}; std::vector<int> vec(a,a+sizeof(a)/sizeof(int)); a[]={1,2,3,4,5}; std::vector<int> vec(a,a+sizeof(a)/sizeof(int)); 我也知道這種方式std::vector<int> vec(5,0); 意思是vec有五個元素,它們都被初始化為0.但這兩種方式並不相關。 如何解釋第一個。 如果我們知道值,那么初始化向量的最佳方式(大多數人使用的)是什么。

類std :: vector具有接受一對輸入迭代器的構造函數

template <class InputIterator>
vector(InputIterator first, InputIterator last, const Allocator& = Allocator());

而這個宣言

std::vector<int> vec(a,a+sizeof(a)/sizeof(int));

包括對構造函數的調用,其中aa + sizeof(a)/sizeof(int)是兩個隨機訪問迭代器,因為指針具有這樣的迭代器類別。

這里aa + sizeof(a)/sizeof(int)是兩個指針,它們指定從std::vector<int>類型的已創建對象的數組中獲取的初始值設定范圍。

考慮到您也可以使用接受初始化列表的構造函數。 例如

std::vector<int> v { 1, 2, 3, 4, 5 };

從C ++ 2011開始支持此構造函數。

你也可以使用:

int a[5]={1,2,3,4,5};
std::vector<int> vec;
for(int i=0; i<5: i++) vec.push_back(a[i]);

std::vector<int> a = {1,2,3,4,5};

適用於C ++ 11。

請參閱: http//en.cppreference.com/w/cpp/language/list_initialization

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM