我被分配以下任务。要求(简化)为... 使用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;
}
答案 0 :(得分:0)
对于std::greater
,您需要
#include <functional>