gpt4 book ai didi

c++:根据预定义的元素索引选择 std::vector 的子集

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:26:09 26 4
gpt4 key购买 nike

我正在寻找一种有效的方法来修剪或复制现有 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"}

我将在一个非常大的 vector 上执行此操作,并且可能会定期执行此操作,因此我正在寻找尽可能高效的方法。

我也在考虑的替代方案,但同样不确定有效的方法是...

由于对象 Test 已填充(在我的例子中它是第 3 方定义的对象),它是使用迭代器单次传递的结果(无法直接访问元素)。我想知道是否可以只添加出现在 SelectionV 中定义的计数中的测试 vector 元素

例如

int count = 0

for (Iterator.begin, Iterator.end(), Iterator++) {
if (count is a number contained in selectionV)
add to Test
}

但我假设这将导致在每次迭代时都通过 selectionV,这比简单地添加所有元素然后选择一个子集效率要低得多。

非常感谢任何帮助。

最佳答案

你也可以使用标准库:

std::vector<std::string> Result(SelectionV.size(), 0);

std::transform(SelectionV.begin(), SelectionV.end(), Result.begin(), [Test](size_t pos) {return Test[pos];});

关于c++:根据预定义的元素索引选择 std::vector 的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9650679/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com