关于使用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的元素

}


你可能感兴趣的:(bug)