(1)Q.由於我想刪除特定元素很多,所以我用容器把它裝起來,但是因為不熟悉用法,又是初學c++...所以這個我怎麼寫都是錯的代碼,希望有大神可以幫我解惑,並修改程序,謝謝!
(2)以下是我的代碼:
int main()
{
list <string> cc;
list<string> tt = { "you","me","I" };
string words;
while (cin >> words) {
cc.push_back(words);
if (words == "Finish!")
break;
}
auto it = cc.begin();
while (it != cc.end()) {
it = cc.erase(tt.begin(), tt.end());
}
cout << "修改後的文章:" << endl;
for (auto &i : cc) {
cout << i << " ";
}
}
你这里用的不对,可以参考list::erase,
erase
里面的入参应该cc
的迭代器.按照你的思路,正确的用法如下:
另外提供一个思路,标准库中已提供了std::set_difference, 可以得到两个集合的差集,唯一不同的是,最终结果存放的容器需要单独提供,实现如下,因为list1的构造无论是标准输入还是直接构造,对差集的计算没啥影响,我直接构造了: