gpt4 book ai didi

c++ - 通过构造函数转换容器

转载 作者:行者123 更新时间:2023-11-30 02:52:21 24 4
gpt4 key购买 nike

假设我有课

class A {
//...
};

struct B {
explicit B(const A&);
//...
};

我有一个 A 的容器,我想从中构建一个 B 的容器。在 C++ 03 中执行此操作的惯用方法是什么?

尝试过但失败了:

std::vector<A> source = fillSourceObjects();
std::vector<B> target;

// 1) won't compile; presumably I need a static helper function,
// but I would like to avoid that
std::transform(source.begin(), source.end(), std::back_inserter(target), B);
std::transform(source.begin(), source.end(), std::back_inserter(target), B::B);

// 2) won't compile; "... error: no match for 'operator=' in '* __result = *__first'
std::copy(source.begin(), source.end(), target.begin());

最佳答案

您可以转换 A 的序列s 变成 B 的序列使用 std::vector<T>构造函数采用序列:

std::vector<B> target(source.begin(), source.end());

关于c++ - 通过构造函数转换容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19059080/

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