gpt4 book ai didi

c++ - 如何设置一个 std::vector 与另一个,其中两个是不同类的 vector ?

转载 作者:太空狗 更新时间:2023-10-29 19:51:24 25 4
gpt4 key购买 nike

有没有办法将一个 std::vector 设置为另一个,其中两个是不同类的 vector ?

struct A {
int a;
};

struct B {
int a, b;
B(int _a, int _b) : a(_a), b(_b) {}
};

int commonB = 123;

std::vector<A> va;
std::vector<B> vb;

// Fill va...

// Code I would like to optimise:
for(size_t i = 0; i < va.size(); ++i) {
vb.push_back(B(va[i].a, commonB));
}

任何东西(伪代码):

vb = va;

B::b 值未初始化?

最佳答案

我只想指出,自从基于范围的 for 循环以来,我并没有太大的愿望经常使用像转换这样的简单算法。我希望你能明白为什么。

std::transform(va.begin(), va.end(), std::back_inserter(vb),
[commonB](A x) -> B { return B(x.a, commonB); });

for (auto& e : va)
vb.emplace_back(e.a, commonB);

关于c++ - 如何设置一个 std::vector 与另一个,其中两个是不同类的 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45307826/

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