gpt4 book ai didi

c++ - 使用构造函数更改 vector 类型?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:03:36 24 4
gpt4 key购买 nike

我有一个充满整数的 vector 。我有一个以整数作为构造函数的类。我想创建一个充满此类的新 vector ,使用第一个 vector 中的值作为每个 vector 的构造函数。

我觉得我目前的方法可以大大优化。

vector<int> integers = /*something...*/;

vector<clazz> clazzes();
for(auto& n : integers)
{
clazzes.emplace_back(clazz(n));
}

最佳答案

a constructor std::vector 接受范围并允许用户定义的转换。这就是您所需要的:

template< class InputIt >
vector( InputIt first, InputIt last,
const Allocator& alloc = Allocator() );

完整程序:

#include <vector>
#include <iostream>

struct Wrapper
{
int value;
Wrapper(int n) : value(n) {}
};

int main()
{
std::vector<int> integers = {0, 1};
std::vector<Wrapper> wrapped{begin(integers), end(integers)};
std::cout << wrapped[1].value << '\n';
}

Live demo

这并没有特别优化,但它使代码更少,因此错误更少,wtf/line 更少。哪个好(TM)。

关于c++ - 使用构造函数更改 vector 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54132369/

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