C ++排序错误“没有重载函数的实例..”

时间:2015-02-13 02:29:19

标签: c++ sorting vector

我对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,但它仍然显示错误。任何解释都会有很大帮助。

1 个答案:

答案 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));
}

您可能想为辅助函数创建自己的命名空间。