c++ vector erase的注意事项

Posted weixin_43739821

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++ vector erase的注意事项相关的知识,希望对你有一定的参考价值。

  1. 要接收erase返回的迭代器

  2. erase返回的迭代器自动指向下一个位置,所以代码里有erase的, 要注意只有不运行erase的部分需要 iterator++

int main()

	std::vector<int> myInt;
	myInt.push_back(1); myInt.push_back(2); myInt.push_back(3);
 
	//for (auto iter = myInt.begin();
	for (vector<int>::iterator iter = myInt.begin();iter != myInt.end();) //iter++ 不要写在这里
	
		if (*iter == 1)
		
			cout << "erase" << *iter << endl;
			iter = myInt.erase(iter); //要接收earse返回的iter
			//不要iter++
		
		else
		
			cout << "no erase" << *iter << endl;
			iter++; //iter++ 写在这里
		
	
	while (1);

int main()

	std::vector<int> myInt;
	myInt.push_back(1); myInt.push_back(2); myInt.push_back(3);
 
	vector<int>::iterator iter = myInt.begin();
	while (iter != myInt.end())
	
		if (*iter == 1)
		
			cout << "erase" << *iter << endl;
			iter = myInt.erase(iter);
		
		else
		
			cout << "no erase" << *iter << endl;
			++iter;
 
		
	
	while (1);

以上是关于c++ vector erase的注意事项的主要内容,如果未能解决你的问题,请参考以下文章

C++ map和vector的erase函数说明

C++ 分割在 vector.erase() 上失败

尝试在 Python 中重写 C++ 代码时出现问题:删除地图中的项目和“vector.erase(vector.end())”

vector中erase用法注意事项

C++ STL中erase函数的用法 求助~~

C++ STL中erase函数的用法 求助~~