我想劃分我的n個元素的數組,並將其複製到一個向量兩半(0到n/2,n/2到n)中。這樣做最簡單的方法是什麼?複製一個子向量
Q
複製一個子向量
3
A
回答
10
你想要做這樣的事嗎?
int array[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
std::vector<int> fst(&array[0], &array[5]);
std::vector<int> snd(&array[5], &array[10]);
這將創建一個矢量fst
含有array
第一五行和含有剩餘部分的載體snd
。
+0
非常感謝。 – brett 2010-08-25 02:59:27
8
要添加到@某事的答案,你可以做同樣的事情,所有的向量(和+1到他的答案BTW):
std::vector<int> source;
//Add things to source
std::vector<int> first(source.begin(), source.begin() + source.size()/2);
std::vector<int> second(source.begin() + source.size()/2, source.end());
+0
+1:用於給出矢量替代 – Chubsdad 2010-08-25 03:02:19
1
你可以使用std::valarray
和std::slice
爲:
#include <valarray>
#include <iostream>
int main(int argc, char *argv[])
{
std::valarray<unsigned int> va(10);
for (size_t i = 0; i < va.size(); ++i)
va[i] = i*2;
std::valarray<unsigned int> fh = va[std::slice(0, va.size()/2, 1)];
std::valarray<unsigned int> sh = va[std::slice(va.size()/2, va.size()/2, 1)];
std::cout << "first half: ";
for (size_t i = 0; i < fh.size(); ++i)
std::cout << fh[i] << " ";
std::cout <<std::endl;
std::cout << "second half: ";
for (size_t i = 0; i < sh.size(); ++i)
std::cout << sh[i] << " ";
std::cout << std::endl;
}
相關問題
- 1. 複製數組到一個std ::向量
- 2. 在lisp中複製2個向量
- 3. 複製結構向量
- 4. 在複製構造函數中複製矢量向量
- 5. 通/複製指向另一個指針
- 6. 抓住一個「子」向量和「連接」向量
- 7. R:子集data.frame由另一個向量
- 8. 創建一個新的C++子向量?
- 9. 如何檢查一個向量是否是另一個向量的子集?
- 10. 如何檢查一個向量是否是另一個向量的子集?
- 11. 複製一個std ::向量重複字段從protobuf的用的memcpy
- 12. 向量指向另一個向量
- 13. 複製一個std :: map的子集
- 14. 複製到InfluxDB另一個測量
- 15. 在AS3中複製一個變量
- 16. 如何在二維向量中複製向量
- 17. 如何使向量指向另一個子向量中的項目?
- 18. std向量,複製數據結構
- 19. 在類之間複製私有向量
- 20. 如何在一個因子上附加一個int向量?
- 21. sizeof()一個向量
- 22. 從一個矩陣複製一定數量的另一個
- 23. 如何將變量標籤從一個變量複製到另一個變量
- 24. 你如何將引用的內容複製到另一個stl向量的stl向量?
- 25. 將元素從一個向量移動到另一個向量
- 26. C++用另一個向量擴展一個向量
- 27. 一攬子複製子目錄
- 28. 將3gp moov原子從一個文件複製到另一個
- 29. 從一個RadComboBox複製項目的子集到另一個
- 30. 原子上覆制一個MySQL表在另一個?
如果你編寫你的算法來使用迭代器範圍(比如在一個向量內)而不是整個向量,你可能不需要複製任何東西,或者至少避免容器的擴散。基於迭代器的算法通常比基於容器的算法效果更好。 – Potatoswatter 2010-08-25 04:38:16
您好在這裏複製功能。例如,如果我使用源作爲矢量?如何使用它 ? – brett 2010-08-25 05:27:25