是否有typedef
等效于:
#define HashTabOf(i) htab[i]
和
#define MAXCODE(n_bits) (((code_int) 1 << (n_bits)) - 1)
?
代码正在从C移植到 C++。
是否有typedef
等效于:
#define HashTabOf(i) htab[i]
和
#define MAXCODE(n_bits) (((code_int) 1 << (n_bits)) - 1)
?
代码正在从C移植到 C++。
不是typedef,而是c++的方式是:
template <typename T>
inline T &HashTabOf(size_t i)
{
return htab[i];
}
和
inline size_t MAXCODE(size_t n_bits)
{
return (1 << n_bits) - 1;
}
我会将@Dani 的模板解决方案实现为:
inline auto & HashTabOf(size_t i) -> decltype(htab[0])
{
return htab[i];
}
它仅在 C++11 中有效。它使用了一个由 C++11 引入的名为trailing-return-type的特性。
这个解决方案的好处是它不再是一个模板。使用时无需提及T
,而在@Dani 的解决方案中也必须提及T
:
auto item = HashTabOf<Type>(4); //Dani's solution
auto item = HashTabOf(4); //My solution
是的,你可以简单地这样写:
inline int & HashofTable(size_t i)
{
return htab[i];
}
另外,为什么不htab[i]
直接使用呢?