我买了这本书的答案,但是说我觉得他给出的答案十分的不好。 再次,笔者写了一份相对来讲比较简单却用实现功能的解法。 #include <iostream> #include <vector> #include <map> template<typename Type> typename Type::value_type MaxValue(Type first, Type last) { //map容易能够很好的完成工作 std::map<typename Type::value_type, std::size_t> words; while (first != last) { ++words[*first++]; } std::map<typename Type::value_type, std::size_t>::const_iterator max_iter = words.begin(); for (std::map<typename Type::value_type, std::size_t>::const_iterator iter = words.begin(); iter != words.end(); ++iter) { if (iter->second > max_iter->second) { max_iter = iter; } } return max_iter->first; } int main() { std::vector<int> ivec; ivec.push_back(1); ivec.push_back(2); ivec.push_back(1); ivec.push_back(2); ivec.push_back(2); std::cout << MaxValue(ivec.begin(), ivec.end()) << std::endl; system("pause"); return 0; }