4.3.7 使用向量的成员函数erase()
接下来,程序从主人公的物品栏中移除了一个物品。然而,此次移除的不是处于序列结尾处的物品,而是处于中间的物品。
- inventory.erase((inventory.begin() + 2));
有一种形式的erase()成员函数可以从向量中移除一个元素。该形式的erase()接受一个实参:引用需要移除元素的迭代器。本例中,传递的实参(inventory.begin() + 2)等于引用inventory中第三个元素的迭代器。于是程序移除了等于"armor"的string对象。因此,所有随后的元素都上移一位。该形式的erase()成员函数返回一个迭代器,它引用移除的元素之后的那个元素。本例中,程序没有将返回的迭代器赋值给任何变量。
陷阱
对向量调用erase()成员函数会使所有引用了移除点之后的元素的迭代器失效,因为所有移除点之后的元素都上移了一位。
接下来,程序显示了向量的内容,证明移除成功。