根据vector角标删除元素

根据vector角标删除元素 两个std::vector一一对应一个存对象一个存索引/角标现在要根据角标删除对象 vector 里的元素同时保持两者同步。1、删除元素用erase()2、erase参数不是角标是迭代器erase(vec.begin() index)3、vector删除元素后后面的元素索引全部左移解决方案一索引的角标排序erase删除从最大角标开始删除#include iostream #include vector #include algorithm int main() { std::vectorstd::string data { A, B, C, D, E, F }; // 要删除的索引假设来自另一个 vector std::vectorint delIndex {1, 3, 4}; // 1. 排序从大到小 std::sort(delIndex.begin(), delIndex.end(), std::greaterint()); // 2. 依次删除从后往前 for (int idx : delIndex) { if (idx 0 idx data.size()) { data.erase(data.begin() idx); } } // 输出结果 for (auto s : data) { std::cout s ; } return 0; }解决方案二直接把删除的vector当成置角标为bool跳过使用就行