我遇到了一個錯誤列表,當我試圖執行此擦除功能從我的矢量中刪除'2'時。我不確定問題在哪裏。幫助將不勝感激!刪除矢量中的特定值
STRUCT明特
struct MyInt
{
friend ostream &operator<<(ostream &printout, const MyInt &Qn)
{
printout<< Qn.value << endl;
return printout;
}
int value;
MyInt (int value) : value (value) {}
};
STRUCT的MyStuff
struct MyStuff
{
std::vector<MyInt> values;
MyStuff() : values()
{ }
};
MAIN
int main()
{
MyStuff mystuff1,mystuff2;
for (int x = 0; x < 5; ++x)
{
mystuff2.values.push_back (MyInt (x));
}
vector<MyInt>::iterator VITER;
mystuff2.values.push_back(10);
mystuff2.values.push_back(7);
//error points to the line below
mystuff2.values.erase(std::remove(mystuff2.values.begin(), mystuff2.values.end(), 2), mystuff2.values.end());
return 0;
}
錯誤消息
stl_algo.h:在函數 '_OutputIterator的std :: remove_copy(_InputInputIterator,_InputIterator,const_Tp &)[with_InputIterator = __gnu_cxx:__ normal_iterator>>,輸出迭代= __ gnu_cxx :: __正常迭代>>,TP = INT]'
否匹配操作員==」
Erorr消息顯示partciular線違反幾乎stl_algo.h的線1267 線,1190,327,1263,208,212,216,220,228,232 ,236
「不匹配的==操作符」有什麼不清楚呢?您需要定義一個'operator =='函數,以便您可以將myInt與整數進行比較。 – jrok
@jrok,這應該是一個答案。這真的很簡單。 – chris