2014-03-12 98 views
0

我有一個元素數組,我想複製到另一個數組並將其移位1個位置。所以類似的東西:移位和複製std ::向量元素

void Blubb(){ 

    std::vector<double> array1(n); 
    std::vector<double> array2(n+1); 

    while(//a condition){ 
    //do some stuff 

     for(int i = 0; i < (n+1); i ++){ 

      array1[i] = array2[i+1]; 

     } 

     //do some more stuff 
    } 
} 

array2中的第一個元素有意不是array1的一部分。

有沒有「簡單」的方法來做到這一點?容器類是否已經提供了類似的東西?還是還有其他課我應該嘗試?

回答

1

看起來你忘記了std :: vector的模板參數。總之,你可以試試:

std::vector<int> array2(n+1); 
std::vector<int> array1(array2.begin()+1, array2.end()); 
+0

我可以應該補充說,我需要這個發生不止一次。它實際上是迭代計算的一部分。假設圍繞for循環有一個循環;) – FreddyKay

+1

在這種情況下,使用assign:array1.assign(array2.begin()+ 1,array2.end())。 –

0

首先,你需要一個模板參數:與std::vector<int>取代的std::vector所有出現,與你使用哪個類型更換int。 先複製載體:

std::vector<int> array2(n+1); 
// fill the vector 
std::vector<int> array1(array2); 

(請注意,數組2必須首先聲明。)

其次,刪除第一個元素:

array1.erase(array1.begin()); 

希望這有助於!

+0

剛編輯它。在聲明之外是否可以這樣做?實際上我忘記了論點 – FreddyKay

+0

如果你問是否有可能刪除聲明之外的向量的第一個元素,是的。 – Alex