我正在开发一种算法,我需要根据输入变量将一个矢量定义为实数或复数.伪就像
void foo(bool is_real)
{
if (is_real)
{
vector< double > v;
}
else vector< complex > v;
}
Run Code Online (Sandbox Code Playgroud)
现在我正在编写两个不同版本的算法,如果is_real为true,我会将算法用于实例,否则,使用复杂的情况.实际上,除数据类型外,两种算法都完全相同.所以我谷歌和它
#if is_real
vector< double > v;
#else
vector< complex > v;
#endif
Run Code Online (Sandbox Code Playgroud)
但是这段代码没有编译.我正在使用linux gnu c ++ 4.7.2.我想知道宏是否仅适用于microsoft c ++?我觉得不舒服,因为在我的实现中唯一的区别将是数据类型,有没有办法选择在运行时应该使用什么类型?谢谢.
R. *_*des 10
如果代码完全相同,请将其设为模板:
namespace detail {
template <typename T>
void foo() {
vector<T> v;
// blah
}
}
void foo(bool is_real)
{
if (is_real)
{
detail::foo<double>();
}
else detail::foo<complex>();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
165 次 |
| 最近记录: |