[英]Replace a bunch of std::vector entries
我有一個std :: vector。 我將這個向量分配為
vec.assign(20000, 0);
現在,我有一個附加數組,我想將其插入向量中。 但是不僅僅是插入,還需要替換向量中的更多元素。
uint8_t a[] = {1,2,3,4,5,6,7,8};
將該數組移到位置x-x + 8的向量中,而無需分配新的內存。
我嘗試和工作的當然是
vec.insert(start, a, a+8);
但是我在那里分配了新的內存,向量的大小也發生了變化,這是不應該發生的。 是的,我可以刪除太多的條目,但是仍然存在我分配更多內存的問題。 僅用向量的內容替換數組,有沒有可能? 像這樣:
vec.replace(start, a, a+8);
我想避免替換每個元素,因為我擔心這可能會花費太長時間。
你怎么看? 有沒有辦法做到這一點? 您以前也遇到過這個問題嗎? 你怎么修好它的?
簡單
#include <algorithm>
std::copy(a, a + 8, vec.begin());
從副本元件a
高達a + 8
,並取代在開始的元素vec.begin()
我認為擔心效率是錯誤的。 上面的解決方案確實替換了每個元素,並且與您自己編寫替換代碼相比,效率可能更高或更高。 如果上面的代碼有任何優勢,那就是清晰度 ,這是一個被忽略的優勢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.