我有三個關於C++作業分配的問題。目標是創建一個簡單的迴文方法。這是我該模板:for循環中的向量迭代器,返回語句,警告,C++
#ifndef PALINDROME_H
#define PALINDROME_H
#include <vector>
#include <iostream>
#include <cmath>
template <class T>
static bool palindrome(const std::vector<T> &input)
{
std::vector<T>::const_iterator it = input.begin();
std::vector<T>::const_reverse_iterator rit = input.rbegin();
for (int i = 0; i < input.size()/2; i++, it++, rit++)
{
if (!(*it == *rit)) {
return false;
}
}
return true;
}
template <class T>
static void showVector(const std::vector<T> &input)
{
for (std::vector<T>::const_iterator it = input.begin(); it != input.end(); it++) {
std::cout << *it << " ";
}
}
#endif
對於上面的代碼,你可以有一個以上的迭代中的for循環的第一部分宣佈?我嘗試在迴文()方法中定義「it」和「rit」,並且在rit之前我一直在獲取有關需要「,」的錯誤。但是當我在for循環之外剪切和粘貼時,編譯器沒有錯誤。 (我正在使用VS 2008)。
第二個問題,我幾乎只是放在這個腦袋上。但是,我在迴文()方法中返回語句的方式正確嗎?在我的腦海中,我認爲它的工作原理就是,一旦* it和* rit不相等,那麼該函數返回false,此時方法退出。否則,如果它完全通過for循環,那麼它在最後返回true。我完全的腦子裏放着如何返回報表如何工作,如果塊和我試圖在我的書中查找一個很好的例子,我找不到一個。
最後,我得到這樣的警告:
\palindrome.h(14) : warning C4018: '<' : signed/unsigned mismatch
現在是因爲我跑我的循環,直到(我< input.size()/ 2)和編譯器告訴我,輸入可以是負數?謝謝!
你不需要聲明你的函數模板爲'static'。 – 2010-06-10 04:00:04