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;
}
解决方案
对于std::greater
,你需要
#include <functional>
推荐阅读
- node.js - NPM 搜索显示版本相同但日期不同的包
- java - Windows 服务器无法启动 Apache Tomcat,因为 443 端口正在使用中,无法被杀死
- scala - 如何为特定文件/目录指定 Scala 样式规则?
- javascript - Angular函数被多次调用
- c# - 如何在wpf中将接口集合保存在xml中
- android - 在 android 上使用 SSL 证书获取
- android - Kotlin 是否有办法将接口的实现委托给另一个类?
- python - 根据多指标前两级选择
- c++ - 按照说明操作后无法构建 .dll
- vim - MacVim - 在打开文件的语言快捷方式之间切换