我正试图在C++实施一种可变的以增长为基础的储存系统。 想法是,这一储存系统中的每一行都应能够持有不同长度和不同类型的数据。 例如,第一行可以是[1,8.6,“hello”,第二行可以是[2,9.6]。
为此,我最初计划使用每行都有单程模板的标记。 每一行将作为<代码>std:tuple<Types...>储存,整个储存将作为<代码>std:vector<std:tuple<Types...>>。
然而,我面临的问题是,当我试图宣布一个地图级以存放这种储存时,我需要明确宣布其参数类型——例如:<代码>Map<int, 双重:string >。 这种做法限制我把不同长度和类型的记录插入同样的地图。
在这里,可以简单地展示我的观点:
template <typename... Types>
class Tuple {
private:
std::tuple<Types...> data;
public:
Tuple() : data() {}
Tuple(Types &&... args) : data(std::forward<Types>(args)...) {}
}
template <typename... Types>
class Map {
private:
vector<Tuple<Types...>> record;
public:
void addRow(Types &&... args) {
record.emplace_back(std::forward<Types>(args)...);
}
};
是否有办法建立一个地图类别,每个浏览量可以持有不同的数据长度和类型? 我如何在C++中落实这一点?