2014-01-13 35 views
1

我爲標題的道歉,我不知道有更好的一個。串聯載體

所以,基本上,我有一個一維向量,這是我提取256個,從這個數據的,直到沒有剩下更多的數據。

std::size_t begin = 0; 
std::size_t nextEnd = 0;   

while (nextEnd < signal.size()) { 
    begin = nextEnd; 
    nextEnd += 256; 
    Transform(signal, begin, std::min(nextEnd, signal.size())); 
} 

裏面的「轉換」功能,有一個新的,臨時向量創建名爲temp_vector和我主內我有一個全球性的一維向量。

我想要做的是,在此循環的每次迭代中,temp_vector的值將被推回global 1D vector的正確位置。

因此,例如:

std::vector<double> global; 
std::vector<double> actual = {1,1,0,0,2, 3, 4 ....., n}; 

// here loop over n number of elements 

// TRANSFORM: 
    // std::vector<double> temp_vector = {10, 50}; // after calculations 
    // global.push_back(temp_vector); 

所以最終結果,global_vector仍將是一維矢量,但是,將包含所有的值,在用於每個元件的同一個地方。

我希望我有足夠的解釋我自己!

+1

@ user1326876 - 這是彌補接近的選票。我認爲它是一個質量問題,但它不清楚你想要完成什麼。你能提供一些例子嗎?例如,告訴你在'actual'開始什麼用小數據集,描述的變換,然後顯示什麼'global'看起來像在最後。 – jww

回答

2

這裏是數組合並代碼:

#include <vector> 
#include <iostream> 

int main() { 
     std::vector<int> glob = {1, 2, 3}; 
     std::vector<int> temp_vector = {4, 5, 6}; 

     glob.insert(glob.end(), temp_vector.begin(), temp_vector.end()); 

     std::vector<int>::const_iterator it = glob.begin(); 
     for(; it != glob.end(); ++it) { 
       std::cout << *it << ", "; 
     } 
     return 0; 
} 

輸出:

./a.out 
1, 2, 3, 4, 5, 6, 
+0

但是,如果你不知道'glob'向量的大小? – Phorce

+0

沒關係。新值將在最後添加,並且水平向量大小將相應擴大。 – vershov

0

考慮直接使用一個有序容器像std::setstd::priority_queue並插入到該容器中,不使用臨時的。