模板类函数的参数为什么不能加const?
jiuyu 2017-11-08 11:48:07 /****************
3、 编写一个函数模板palindrome,以一个vector为参数,
根据vector顺序和倒序是否相同(例如,一个包含元素1,2,3,2,1的vector就是回文,
而一个包含元素1,2,3,4的vector就不是),返回true或false。
*****************/
#include <iostream>
#include <vector>
using namespace std;
// 参数 vector<T>& vec 为什么不能为const vector<T>& vec ??
/*
[Error] conversion from 'std::vector<int>::const_iterator
{aka __gnu_cxx::__normal_iterator<const int*, std::vector<int> >}'
to non-scalar type 'std::vector<int>::iterator
{aka __gnu_cxx::__normal_iterator<int*, std::vector<int> >}' requested
*/
template <typename T > bool palindrome ( vector<T>& vec) {
typename vector <T> :: iterator iter1 = vec.begin() ;
typename vector <T> :: iterator iter2 = vec.end() ;
for (int i = 0; i < vec.size() / 2 ; i++,iter1++ ) {
if ( (*iter1) != (*--iter2) ) {
return false;
}
}
return true;
};
int main() {
vector<int> vec;
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
vec.push_back(2);
vec.push_back(1);
cout << palindrome(vec) << endl;
return 0;
}