如何在C++的二维vector中删除指定行?
二维vector删除整行的正确方法
你之前用v[1].clear()或v[1].erase(v[1].begin(), v[1].begin()+3)的操作,只是清空了第二行的内部元素,并没有删除整个行。执行后原vector的大小还是3,v[1]变成了空的子vector,而{7,8,9}仍在v[2]的位置,所以无法通过v[1][0]访问到7。
要实现完全删除整行的需求,需要操作外层vector的迭代器,直接移除对应的行元素:
// 删除索引为1的行(即{4,5,6}所在的行) v.erase(v.begin() + 1);
执行这段代码后,外层vector的大小会从3变为2,原v[2]的{7,8,9}会自动前移到v[1]的位置,此时v[1][0]就指向7,最终vector的结构就是{{1,2,3}, {7,8,9}},完全符合你的要求。
内容的提问来源于stack exchange,提问作者Centixel
相关产品推荐
相关产品推荐

