2012-07-22 51 views
-3

我是一個相對有經驗的程序員,回到一些C++審查的類。我們有一個任務來編寫幾個相對簡單的C++程序。得到一個我不習慣的奇怪的錯誤,但我確定這是這個社區的小孩玩法。生鏽/初學者C++編譯器錯誤

int pull_next_element (int r, std::vector<int>& sequence) { 
    int x = sequence[0]; 
    sequence.erase(sequence.begin()); //orig: sequence.erase(0); 
    return x; 
} 

錯誤我得到:

Error C2664: 'std::_Vector_iterator<_Myvec> std::vector<_Ty>::erase(std::_Vector_const_iterator<_Myvec>)' : cannot convert parameter 1 from 'int' to 'std::_Vector_const_iterator<_Myvec>' 

編輯:用迭代器而不是數字索引代替,否則固定整個代碼這個問題。感謝大家。

+0

它不是完全清楚你的問題是什麼在這裏... – 2012-07-22 12:24:58

+0

請您發佈的來源,行是行58 – 2012-07-22 12:28:19

+0

僅供參考,http://en.wikipedia.org/wiki/Permutation指示#Numbering_permutations – avakar 2012-07-22 12:30:08

回答

1

你應該使用引用參數,而不是「序列」,或者你擦除的取值將是無用的。

int pull_next_element (int r, std::vector<int>& sequence) 
+0

啊是的,我忽略了,謝謝! – AnujSuper9 2012-07-22 13:40:13

3

http://www.cplusplus.com/reference/stl/vector/erase/

// erasing from vector 
#include <iostream> 
#include <vector> 
using namespace std; 

int main() 
{ 
    unsigned int i; 
    vector<unsigned int> myvector; 

    // set some values (from 1 to 10) 
    for (i=1; i<=10; i++) myvector.push_back(i); 

    // erase the 6th element 
    myvector.erase (myvector.begin()+5); // <==================================================== 

    // erase the first 3 elements: 
    myvector.erase (myvector.begin(),myvector.begin()+3);// <==================================== 


    cout << "myvector contains:"; 
    for (i=0; i<myvector.size(); i++) 
    cout << " " << myvector[i]; 
    cout << endl; 

    return 0; 
} 
+0

雖然答案在此鏈接中可用,但只是鏈接的答案會因爲鏈接無法訪問而受到阻礙。最好用相應的部分進行解釋。 – 2012-07-22 12:34:40