gpt4 book ai didi

具有自定义函数的 C++ vector 构造函数

转载 作者:搜寻专家 更新时间:2023-10-31 02:06:18 24 4
gpt4 key购买 nike

我目前正在处理一小段代码,我想在其中获取一个 vector 的每个值并调用包装类并放入一个新 vector 中。

vector<MyClass> input;
vector<WrapperClass> output;
output.reserve(input.size());
for (auto& myclass: input) {
output.emplace_back(WrapperClass(myclass));
}

我知道上面的可读性并不是很糟糕,但是像下面这样的东西是可能的:

vector<WrapperClass> output(input.begin(), input.end(), WrapperAllocator)

我不太确定分配器应该做什么,而且由于我对“C++ 概念”不熟悉,很多文档都让我头疼。也许这是错误的用例,但问题真正归结为;

是否可以在数据从一个容器传递到另一个容器时对其进行转换?如果可能,将如何完成?

最佳答案

Is it possible to transform the data as it's passed from one container to another?

如果您的 WrapperClass 具有采用 MyClass 的构造函数,您可以直接从范围创建另一个 vector 并在该构造函数中转换数据,例如:

#include <iostream>
#include <vector>

struct MyClass
{
int x;
MyClass(int x) : x{ x } {}
};

struct WrapperClass
{
int x;
WrapperClass(MyClass const &mc)
{
x = mc.x + 10;
}
};


int main()
{
std::vector<MyClass> v1 = { 1,2,3,4 };
std::vector<WrapperClass> v2(v1.begin(), v1.end());


//test
for (auto wc : v2)
std::cout << wc.x << std::endl;

return 0;
}

演示:https://ideone.com/6MFd2s

11
12
13
14

关于具有自定义函数的 C++ vector 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50518681/

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