gpt4 book ai didi

c++ - 如何初始化vector的模板子类

转载 作者:行者123 更新时间:2023-12-02 10:00:30 25 4
gpt4 key购买 nike

以下示例初始化vector的 vector 很好用:

using DataElement = std::vector<double>;
using DataVector = std::vector<DataElement>;

DataVector data;
data.emplace_back(DataElement{ 1.0f, 1.0f });
data.emplace_back(DataElement{ 1.1f, 1.1f });
现在,我想使 DataElement的类型通用,因此我尝试了以下模板方法:
template <typename T>
class DataElement : public std::vector<T> {};

template <typename T>
class DataVector : public std::vector<DataElement<T>>{};

DataVector<double> data;
data.emplace_back(DataElement<double>{ 1.0f, 1.0f });
data.emplace_back(DataElement<double>{ 1.1f, 1.1f });
但这会在 emplace_back行上产生初始化错误: no suitable constructor exists to convert from "float" to "std::vector<double, std::allocator<double>>我对 vector 进行了子分类,因为这似乎是将其包装在模板中的正确方法,但是由于任何其他原因我不需要进行子分类,即我不需要扩展 vector 类的功能。
我构造 vector 的通用 vector 的方式是否存在问题?
如果可以的话,如何按照我的开头示例简洁地静态初始化此数据结构的实例?

最佳答案

using与模板一起使用。

#include <vector>

template <typename T>
using DataElement = std::vector<T>;

template <typename T>
using DataVector = std::vector<DataElement<T>>;

int main()
{
DataVector<double> data;
data.emplace_back(DataElement<double>{ 1.0f, 1.0f });
data.emplace_back(DataElement<double>{ 1.1f, 1.1f });
}

关于c++ - 如何初始化vector的模板子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62728880/

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