关于使用STL常见的两个bug

时间:2023-03-10 02:39:48
关于使用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的元素
}

相关文章