2013-07-04 24 views
2

How do you copy the contents of an array to a std::vector in C++ without looping?有一個很好的例子,如何簡單地將數組的內容複製到一個向量中。是否可以使用數組副本複製矢量的一部分?

您可以使用相同的技術將矢量的一部分複製到另一個矢量中嗎?

例如

vector<int> v; 

// ...v has some number of elements and we're interested in an 
// arbitrary number (y) from an arbitrary start point (x)... 

vector<int> v2(&v[x], &v[x + y]); 
+2

如果您確信'v'至少有'X + y'元素,你可以使用這個確切的符號。然而,考慮由克里斯的答案是更通用的 –

回答

11

是,使用迭代器:

vector<int> v2(v.begin() + x, v.begin() + x + y); 

可以使它有點更通用的,如果你想:

vector<int> v2(std::next(std::begin(v), x), std::next(std::begin(v), x + y)); 

原因指針版本(數組衰變轉化爲兩個參數)首先起作用的是指針可以被視爲隨機訪問迭代器。

+1

我需要啓用c + + 11和'#包括'在後一種情況下,我是對嗎? – johnchen902

+0

@ johnchen902,是的,這是正確的。 – chris

+0

利用ADL可以節省很少的擊鍵次數:' – Nawaz

相關問題