Я ищу эффективный способ обрезки или копирования подмножества существующего std :: vector.Критерии для того, чтобы элементы соответствовали подмножеству / остатку, заключаются в том, что их индекс содержится в отдельном предопределенном std :: vector.
e.g std::vector<String> Test = { "A", "B", "C", "D", "E"}
std::vector<int> SelectionV = {1,2,5}
Result = {"A", "B", "E"}
Я буду делать это для очень большого вектора и, вероятно, дляна регулярной основе, поэтому я ищу как можно более эффективный метод.
Альтернатива, которую я тоже рассматриваю, но опять же неуверенная в эффективном методе - это ...
Поскольку объект Test заполнен(в моем случае это объект, определенный третьей стороной), это результат одного прохода с использованием итератора (прямой доступ к элементу невозможен).Мне было интересно, если вместо этого можно добавить только элементы вектора теста, которые появляются в счетчике, определенном в SelectionV
например
int count = 0
for (Iterator.begin, Iterator.end(), Iterator++) {
if (count is a number contained in selectionV)
add to Test
}
, но я предполагаю, что это приведет к пропуску черезselectionV на каждой итерации, что было бы гораздо менее эффективно, чем простое добавление всех элементов и последующее выделение подмножества.
Любая помощь очень ценится.