首页 > 解决方案 > 我收到一个模板错误,我不知道为什么

问题描述

我的任务是完成以下任务。要求(简化)是……使用 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;
}

标签: c++

解决方案


对于std::greater,你需要

#include <functional>

推荐阅读