【发布时间】:2013-11-28 11:16:52
【问题描述】:
我开始学习 C++ 和 STL。 我有一个问题:
写一个函数模板palindrome,接受一个向量参数,返回true或false来检查向量是否是回文(12321是回文,1234不是回文)
这是我的代码:
template<class T>
bool palindrome(vector<T> & v)
{
int i,j;
for( i=0,j=v.size();i<v.size()/2;i++,j--)
{
if(v[i]!=v[j])
return false;
}
return true;
}
void main()
{
int ar[]={1,2,3,2,1};
vector<int> v(ar,ar+5);
cout<<palindrome(v);
}
代码不起作用。我知道它有一些错误,但我不知道如何解决它们。请帮我! 非常感谢!
【问题讨论】:
-
确切的错误信息是什么?你期望什么输出,你得到什么输出?
-
尝试使用迭代器
rbegin,而不是使用 size(),这不是迭代向量的最佳方式。 -
main 应该返回一个 int,而不是 void。
-
您可以只使用双向迭代器方法,使用
template<typename Iterator> palindrome(Iterator begin, Iterator end)并传递v.begin()和v.end()。只是一个想法。