我創建了一個包含有關變量,即他們的姓名和電話號碼C++:矢量容器和<algorithm>的std ::發現
struct var{
string name;
int value;
};
現在,我想用迭代器來更新它,使用下面的函數信息的結構:
void updateVariable(vector<Variable>& vars,Variable& newVar){
vector<Variable>::iterator it = find(vars.begin(), vars.end(), newVar);
if(it == vars.end()){
vars.push_back(newVar);
}
else{
*it = newVar;
}
}
只是可以肯定的是,我得到的錯誤是在調用find()的行。任何想法,爲什麼我得到錯誤?以下是錯誤:
/usr/include/c++/4.6/bits/stl_algo.h:162:4: error: no match for ‘operator==’ in ‘__first.__gnu_cxx::__normal_iterator<_Iterator, _Container>::operator* [with _Iterator = Variable*, _Container = std::vector<Variable>, __gnu_cxx::__normal_iterator<_Iterator, _Container>::reference = Variable&]() == __val’
更新:
謝謝你們所有的快速幫助,以及明確的答案!
你可以使用std :: pair只有兩個值或元組(我認爲)從C + + 11多個值。那些已經爲您定義的比較和平等操作。 – 2013-02-21 18:39:31
您應該使用已排序的向量和'std :: binary_search'。 – 2013-02-21 18:46:34