我收到模板错误,我不确定为什么

时间:2019-09-16 03:18:49

标签: c++

我被分配以下任务。要求(简化)为... 使用STL容器std :: list,std :: vector和std :: deque, 演示整数按降序排序。 使用std :: set创建唯一整数的数据集。 将数据集复制到其他容器。 洗净容器。 显示每个容器的内容。 使用适当的排序算法对每个容器中的数据进行排序。 重新显示每个容器的内容。 代码必须用C ++编写

这是我想到的代码,但是在第20行和第30行上抛出了错误

  

“更大的不是模板”

。我敢肯定,这是一个容易解决的问题,但是我尝试的所有方法都无法正常工作。感谢您的帮助。

#include "stdafx.h"
#include <iostream>
#include <set>
#include <iterator>
#include <deque>
#include <list>
#include <vector>
#include <algorithm>
#include <math.h>

using namespace std;


int main()
{

    set <int, greater <int>> set1;

    set1.insert(4);
    set1.insert(5);
    set1.insert(3);
    set1.insert(6);
    set1.insert(2);
    set1.insert(5);
    set1.insert(1);

    set <int, greater <int> > ::iterator itr;
    cout << "\n/the initial set is : ";
    for (itr = set1.begin(); itr != set1.end(); ++itr)
    {
        cout << '\t' << *itr;
    }
    cout << endl;

    deque <int> deque_ex1;
    list <int> list_ex1;
    vector <int> vec_ex1;

    for (itr = set1.begin(); itr != set1.end(); ++itr)
    {
        vec_ex1.push_back(*itr);
        deque_ex1.push_back(*itr);
        list_ex1.push_back(*itr);
    }
    std::random_shuffle (vec_ex1.begin(), vec_ex1.end());
    std::random_shuffle(deque_ex1.begin(), deque_ex1.end());

    vector<int> V(list_ex1.begin(), list_ex1.end());
    std::random_shuffle(V.begin(), V.end());
    list_ex1.assign(V.begin(), V.end());

    vector <int> ::iterator itr1;
    cout << "The shuffled vector is: ";
    for (itr1 = vec_ex1.begin(); itr1 != vec_ex1.end(); ++itr1)
    {
        cout << '\t' << *itr1;
    }
    cout << endl;

    deque <int> ::iterator itr2;
    cout << "The shuffled deque is: ";
    for (itr2 = deque_ex1.begin(); itr2 != deque_ex1.end(); ++itr2)
    {
         cout << '\t' << *itr2;
    }
    cout << endl;

    list <int> ::iterator itr3;
    cout << "The shuffled list is: ";
    for (itr3 = list_ex1.begin(); itr3 != list_ex1.end(); ++itr3)
    {
        cout << '\t' << *itr3;
    }
    cout << endl;
    cout << endl;

    cout << "sorted data structures (using system defined sort function):" << endl;
    sort(vec_ex1.begin(), vec_ex1.end());
    cout << "The sorted vector is :";
    for (itr1 = vec_ex1.begin(); itr1 != vec_ex1.end(); ++itr1)
    {
        cout << '\t' << *itr1;
    }
    cout << endl;

    sort(deque_ex1.begin(), deque_ex1.end());
    cout << "The sorted Deque is: ";
    for (itr2 = deque_ex1.begin(); itr2 != deque_ex1.end(); ++itr2)
    {
        cout << '\t' << *itr2;
    }
    cout << endl;

    list_ex1.sort();
    cout << "The sorted list is: ";
    for (itr3 = list_ex1.begin(); itr3 != list_ex1.end(); ++itr3)
    {
        cout << 't' << *itr3;
    }
    cout << endl;

    return 0;
}

1 个答案:

答案 0 :(得分:0)

对于std::greater,您需要

#include <functional>