我對C++中的std::erase
函數感到困惑。標準:: C++中的擦除
以下代碼在調用std::erase
之前和之後獲得相同的輸出。但是,如果在執行std::erase
後遍歷列表,則輸出中未顯示擦除值。 幫我理解std::erase
。
#include<bits/stdc++.h>
using namespace std;
int main()
{
list<int> v;
v.push_back(12);
v.push_back(10);
v.push_back(20);
list<int>::iterator it;
it = v.begin();
printf("%u %d\n", it, *it);
v.erase(it);
printf("%u %d\n", it, *it);
for(it= v.begin(); it!= v.end(); it++)
cout<< *it<<" ";
return 0;
}
輸出:
"Memory address" 12
"Memory Address" 12
10 20
返回的迭代器有什麼實際上不清楚從[文檔] (http://en.cppreference.com/w/cpp/container/list/erase)?除此之外,你的輸出不會像你描述的那樣渲染。 –
此外,[不包括''](http://stackoverflow.com/questions/31816095/why-should-i-not-include-bits-stdc-h)。 –
標準庫中沒有'std :: erase'。 – juanchopanza