Я ищу эффективный способ либо обрезки, либо копирования подмножества существующего 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 на каждой итерации, что будет гораздо менее эффективен, чем простое добавление всех элементов и последующий выбор подмножества.
Мы высоко ценим любую помощь.