#include<iostream>
#include "stdlib.h"
using namespace std;
#include<vector>
#include<iterator>
template <typename type1>
vector<type1> map(vector<type1> &my_vec, type1 (*my_fun)(type1)){
vector<type1> result_vec;
for(vector<type1>::iterator iter = my_vec.begin(); iter != my_vec.end() ; iter++){
result_vec.push_back(my_fun(*iter));
}
return result_vec;
}
在這個節目,我想編寫一個地圖功能(類似於一個在python),但也有一些是錯誤的錯誤,編譯器會告訴我:關於C++泛型編程
In function 'std::vector<type1> map(std::vector<type1>&, type1 (*)(type1))':
[Error] need 'typename' before 'std::vector<type1>::iterator' because 'std::vector<type1>' is a dependent scope
[Error] expected ';' before 'iter'
[Error] 'iter' was not declared in this scope
什麼問題是什麼? (當我將「type1」更改爲「int」時,一切正常)
如果你打算使用已經存在於標準庫中的名字(比如'map'),你可能不應該使用'namespace std'。事實上,'使用名稱空間std'通常是一個糟糕的主意。 –
您是否要求人們爲您讀取編譯器錯誤?它正在告訴你,你需要做什麼來解決這個問題,它會給你一個很好的,可搜索的,暗示問題的原因。 – juanchopanza