簡體   English   中英

替換一堆std :: vector條目

[英]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.

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