2017-07-10 101 views
-3

Im將數據從一個矢量複製到另一個矢量時遇到問題。 爲了更好地理解我的問題,想象我有一個vectorA和一個vectorB,數據類型相同。 矢量A裏面沒有東西,有5個尺寸。C++將X矢量數據插入到另一個矢量

我想把vectorB的前5個字節放到vectorA中,但我不知道如何。 基本上,這樣的事情:

vectorA.insert(vectorB.begin(),5,vectorB(5)); 

,這並不工作,但我怎麼可以做這樣的事情? 我應該把數組中的向量?我真的無法做什麼,因爲我是新來的矢量工作,所以幫助/解決方案會很好。

無論如何,謝謝!

+1

做 「向量A裏面沒有什麼,有5大小。」這似乎是自相矛盾的。 – juanchopanza

+0

@juanchopanza我的意思是,它有足夠的大小來容納5個字節 – jeyejow

+0

這聽起來像*容量*,但字節不是一個很好的指標,除非你有一個字節向量。 – juanchopanza

回答

2

您可以填寫最多a,象這樣b的數據:

std::vector<char> a,b; 
// fill up b 
a.insert(a.begin(),b.begin(),b.end()); 

// or if only wanting a certain number of bytes: 
size_t bytes = 5; 
a.insert(a.begin(),b.begin(),b.begin() + 5); 

要小心,以確保b有足夠的數據,如果你用第二個方法去插入。你可以用一個有條件的或像這樣檢查:

a.insert(a.begin(),b.begin(),b.begin() + std::min(b.size(), 5)); 

我們看看std::insert第四原型。

+0

如果vectorB超過5個字節,我只想要第5個字節? – jeyejow

+0

@jeyejow查看編輯 – Charles

+1

在11分鐘內接受你的awnser,但是謝謝! :) – jeyejow

0

你可以簡單地使用for loop

int size=5; 
for(int i=0;i<size;i++) 
{ 
    vectorA.push_back(vectorB[i]); 
}