1
尋找代碼來實現numpy
的arange
函數在c + +中,我發現this answer。錯誤使用自動:不會命名一個類型,C++版本的numpy的arange
我把下面的代碼在一個文件test_arange_c.cpp
:
#include <vector>
template<typename T>
std::vector<T> arange(T start, T stop, T step = 1)
{
std::vector<T> values;
for (T value = start; value < stop; value += step)
values.push_back(value);
return values;
}
int main()
{
double dt;
dt = 0.5;
auto t_array = arange<double>(0, 40, dt);
return 0;
}
當我嘗試編譯它,我得到以下錯誤:
$ c++ test_arange_c.cpp -o test_arange_c.out
test_arange_c.cpp: In function ‘int main()’:
test_arange_c.cpp:14:8: error: ‘t_array’ does not name a type
auto t_array = arange<double>(0, 40, dt);
毫無疑問,我犯了一個錯誤這對於經驗豐富的C++用戶來說是顯而易見的。但是,在谷歌搜索了一段時間後,我還沒有想出它是什麼。
看起來你沒有啓用C++ 11的支持,或你的編譯器沒有它。 – Brian
@Brian是否有一個簡單的方法來檢查這個?會報告我的編譯器版本告訴你是否是這種情況? – dbliss
您可以使用'__cplusplus'宏來檢查給定編譯是否啓用C++ 11。 http://stackoverflow.com/questions/5047971/how-do-i-check-for-c11-support – Brian