c++ - c++:用户定义类型的向量?
问题描述
我有一个要存储数据的向量。我希望用户能够决定存储向量的精度级别(浮点数或双精度数)。
如何根据用户输入声明向量?这显然不起作用:
std::vector<userWantsFloats ? float : double> data; ...
解决方案
c++17选项可能是使用std::variant
.
std::variant<std::vector<float>, std::vector<double>> data;
然后,您可以根据用户输入初始化变体,但任何逻辑只能通过使用编写一次std::visit
std::visit([](auto&& vec) {
// Do your thing
}, data);
如果 C++17 不是一个选项,那么 boost 有一个变体模板,它启发了现在的标准模板。您可以改用它。请参阅有关该主题的boost 文档。
推荐阅读
- php - Laravel 5.2 抛出 HTTP ERROR 500
- javascript - 如何使用未知数量的复选框控制复选框“选中”值
- objective-c - 尽管导入了 Firebase.framework,但找不到头文件 (FirebaseCore/FirebaseCore.h)
- video - 将 .osp OpenShot 项目导出到 ffmpeg 脚本,作为通过交换地狱解决视频导出冻结或崩溃的方法
- ios - 如何在 iPhone 中快速从文件路径 url 获取视频或图像?
- android - DaggerAppComponent - 未解决的参考
- spring-boot - Spring Boot 执行器页面返回 http 链接而不是 https
- typescript - 类实例的打字稿约束不是对象
- gensim - 从 gensim LDA 模型中提取主题分布
- mysql - 使用许多连接和过滤器优化 MySQL 查询