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的元素 }