std::vector使用注意事项
std::vector.end()并不指向最后一个元素,而是指向最后一个元素后面的一个内存单元,这里单元里并没有存储任何数据,因此,对该单元进行操作时就会出现范围溢出的错误。
要想调用vector的最后一个元素,则要使用vector.end()-1,才能调用成功。
如果要对vector中的元素进行删除有两种方法
- vector.erase(vector.begin(), vector.end()-1)。使用这种方法可以改变vector的size和capacity。
- vector.clear()。使用这种方法可以改变vector的size,却无法改变vector的capacity。其中capacity是vector所占的内存大小。如果要删除这些内存,可以使用vector().swap(x)进行删除。
参考内容: