我对C ++和编程一般都很陌生,所以如果第一次没有正确的信息,我会道歉
我开始学习如何使用Bjarne Stroustrup编写的“Programming:Principles and Practice Using C ++(第2版)”一书编写代码,并在使用第4.6.4章中提供的代码时遇到了一些错误。每次我去运行代码时它会告诉我“std :: sort”,并且没有重载函数“std :: sort”的实例与参数列表匹配。第16行还有一个新的错误,因为IDE(Visual Studio 2013 Express)表示标识符未定义,因此i-1会出现错误。
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
int main()
{
std::vector<std::string>words;
for (std::string temp; std::cin >> temp;)
words.push_back(temp);
std::cout << "Number of words: " << words.size() << std::endl;
std::sort(words);
for (int i = 0; i<words.size(); ++i)
if (i == 0 || words[i–1] != words[i]) // is this a new word?
std::cout << words[i] << "\n";
}
我似乎无法找出导致错误的原因,因为我已经放置了所需的#include,但它仍然显示错误。任何解释都会有很大帮助。
答案 0 :(得分:2)
std :: sort需要一对迭代器。
std::sort(words.begin(), words.end());
您可以定义自己的辅助函数,它接受一个参数。
template<typename Container>
inline void sort(Container& c)
{
std::sort(std::begin(c), std::end(c));
}
您可能想为辅助函数创建自己的命名空间。