关于使用STL常见的两个bug

1、bug 1
class CTest
{
public :
		vector<int> getVector() const  //需要写成引用形式,不然下面begin、end调用会以拷贝形式调用
		{
			return m_vec;
		}
		
		void push(int rValue)
		{
			m_vec.push_back(rValue);
		}
		
private:
		vector<int> m_vec;
};

void Test()
{
	CTest a;
	for(int i=0;i<5;i++)
		a.push(i);
	
	vector<int>::iterator iBegin = a.getVector().begin();
	vector<int>::iterator iEnd = a.getVector().end();
	
	for(;iBegin!=iEnd;i++)
	{
		if(*iBegin == 3)
			return 3;
	}
	
	return -1;	
}

2、bug 2
void Test()
{
	CTest a;
	vector<int>::iterator iBegin = a.getVector().begin();
	for(int i=0;i<5;i++)
		a.insert(iBegin,i);//iBegin在一次插入之后,不在最开始的位置,甚至不再指向任何一个vector的元素
}


原文地址:https://www.cnblogs.com/suncoolcat/p/3304159.html