c++ - 使用构造函数更改向量类型?
问题描述
我有一个充满整数的向量。我有一个将整数作为构造函数的类。我想创建一个充满此类的新向量,使用第一个向量中的值作为每个向量的构造函数。
我觉得我目前的方法可以大大优化。
vector<int> integers = /*something...*/;
vector<clazz> clazzes();
for(auto& n : integers)
{
clazzes.emplace_back(clazz(n));
}
解决方案
有一个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';
}
这并不是特别优化,但它减少了代码,因此更少的错误和更少的 wtf/line。哪个好(TM)。
推荐阅读
- html - 更改基本 href,但保留当前路径
- javascript - 如何用js删除两个“tr”行?
- snowflake-cloud-data-platform - 如何通过查询从Snowflake中创建特定视图的表
- c++ - 二进制数功能
- javascript - 带有数据表的范围日期选择器过滤器无法过滤数据VUE3
- javascript - Nest JS 区分同一控制器的 2 个不同的路由
- android - 为库模块编写专业守卫角色的最佳方法是什么
- windows - 测试路径返回假,即使它存在
- java - 无法初始化类 org.codehaus.groovy.runtime.InvokeHelper
- mysql - 运行总计以查找第一个日期达到的总和按组划分