gpt4 book ai didi

c++ - 在 C++ 中从成对 vector 转换为两个独立 vector 的最快方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:53:37 24 4
gpt4 key购买 nike

假设我有一个 vectorpair<int,int> .现在我想提取 pair.firstpair.second作为独立 vector 。我可以迭代 vector 并执行此操作,但有更好/更快的方法吗?

最佳答案

在 C++11 中,如果您不再需要旧 vector ,您也许可以从移动语义中获得一点点额外的效率:

for (auto it = std::make_move_iterator(v.begin()),
end = std::make_move_iterator(v.end()); it != end; ++it)
{
v1.push_back(std::move(it->first));
v2.push_back(std::move(it->second));
}

除此之外,您当然不能做得比一个循环更好。您将必须至少接触每个元素一次,因此这是尽可能高效的。

请注意,只有当元素类型本身具有比复制更好的移动语义时,移动才会有所不同。 int 或任何 POD 都不是这种情况。但是编写通用的代码并没有什么坏处,这样您就可以在未来的情况下利用它。

但是,如果复制/移动是个问题,您应该考虑是否为您的原始 vector 使用某些 View 适配器可能是更好的方法。

关于c++ - 在 C++ 中从成对 vector 转换为两个独立 vector 的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8443172/

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