gpt4 book ai didi

c++ - 如何从对象指针 vector 创建对象值 vector ?

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

“天真的”解决方案是;

std::vector<T> vector_of_objects;
vector_of_objects.reserve(vector_of_pointers.size());
for (T const * p : vector_of_pointers)
vector_of_objects.push_back(*p);

上面的内容看起来很麻烦,而且可能不是很明显。

是否有一种解决方案至少不会显着降低效率并且可能更快更直观?我在想 C++11 可能有一个我不知道的解决方案……

最佳答案

将所有内容写在一行中是否意味着更短的代码?没有。

在我看来,这两行更短且更具可读性:

for (auto p : vector_of_pointers)

vector_of_objects.emplace_back(*p);

函数std::for_each不比基于范围的循环短,有时由于传递 lambda 表达式它更大。

函数std::transform甚至比 std::for_each 还要长,但是 transform 这个词有助于找出下面发生的事情。

关于c++ - 如何从对象指针 vector 创建对象值 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19050087/

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