模板参数的 C++ value_type

标签 c++ value-type

首先,这是我的例子:

SymmetricMatrix<std::vector<int>, int> a;
SymmetrixMatrix<std::list<int>, int> b;
SymmetricMatrix<std::deque<double>, double> c;

SymmetricMatrix<std::vector<int> > d;
SymmetricMatrix<std::vector<double> > e;

所以有两个模板参数。如果我为第二个写了一个默认参数,我就不必在创建对象时给它命名。但是我怎样才能将它调整到第一个参数呢?例如,如果第一个参数是 std::vector<int> , 第二个应该是 int , 如果第一个是 std::vector<double> , 第二个应该是 double .

最佳答案

template<class DS, class T = typename DS::value_type>
class SymmetricMatrix
{
};

SymmetricMatrix<std::deque<double>> c;

假设 DS(数据结构)包含 typedef value_type,否则将无法编译。您可以将 value_type 替换为您想要的任何内容,只要它在 DS 中即可。

关于模板参数的 C++ value_type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18252561/

相关文章:

c++ - 在指针成员之前调用非指针成员的析构函数

.net - 对值类型调用方法是否会导致 .NET 中装箱?

c# - 强制(通用)值类型成为引用

C++ 递归打印二叉树的问题

c++ wininet ftp列出许多文件错误

c++ - 类型定义后需要多个部分特化和完全特化 <>

c# - 将值类型捕获到 lambda 时是否执行复制?

c++ - 如何创建value_type类型特征?

swift - 值类型的引用循环?

c++ - vector 下标是标准的 C/C++ 吗?