2012-10-16 24 views
1

我有一個std ::向量。我分配這個載體像替換一堆std ::向量條目

vec.assign(20000, 0); 

現在我有一個額外的數組,我想插入向量。但不只是像插入一樣,更多的是替換向量中的元素。

uint8_t a[] = {1,2,3,4,5,6,7,8}; 

將該數組移動到位置x - x + 8上的向量中,而不分配新的內存。

我嘗試和作品當然是

vec.insert(start, a, a+8); 

,但還有我分配新的內存和矢量的變化,這是不應該發生的大小。 是的,我可以刪除條目,這些條目太多了,但仍然存在問題,我正在分配更多的內存。是不是有可能,只是用矢量的內容替換數組? Smth像這樣:

vec.replace(start, a, a+8); 

我想避免替換每個元素,因爲恐怕可能需要很長時間。

您認爲如何? 有沒有辦法做到這一點? 你之前也有過這個問題嗎?你怎麼修好它的?

回答

6

簡單

#include <algorithm> 

std::copy(a, a + 8, vec.begin()); 

副本從a高達a + 8元件和替換元素開始vec.begin()

我覺得你錯在擔心效率。上面的解決方案確實代替了每個元素,並且與自己編寫替換代碼相比,效果可能不會更好,效率也更低。如果上面的代碼有任何優勢,它是清晰度,這是一個被忽略的優勢。