sort不能接受流迭代器??

杨小胖娃 2019-06-18 11:28:42
istream_iterator<int>input(cin),eof; sort(input,eof)为什么会报错c2676
...全文
122 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
杨小胖娃 2019-07-30
  • 打赏
  • 举报
回复
引用 1 楼 提及的回复:
istream_iterator 迭代器支持的操作太少了,满足不了 sort的条件
流迭代器不支持随机操作
提及 2019-07-30
  • 打赏
  • 举报
回复
点错了 流迭代器只支持向前操作,所以不能使用插入排序 而且,流迭代器只是提供读取数据的方式(我是这么想的),并不保存数据(缓存区不算)。 所以,要让 sort 支持 istream_iterator,就需要提供存放数据的地方,而且还需要一种符合流特点的排序算法(桶排序?) 还需要完善流终止条件
提及 2019-07-30
  • 打赏
  • 举报
回复
引用 5 楼 weixin_44992171 的回复:
[quote=引用 1 楼 提及的回复:]istream_iterator 迭代器支持的操作太少了,满足不了 sort的条件
流迭代器不支持随机操作[/quote] 噗,我都想吐槽我自己了,迭代器的确不支持 我不知道我当时是怎么想的, 流迭代器支持向前 但还是有其他方法实现 将其数据保存下来在排序

std::vector<int> nums;

while ( begin != end ) {
	nums.push_back( *begin++ );
}

std::sort( nums.begin(), nums.end() );
但是默认终止条件有点傻 --- vector 的排序是插入排序
提及 2019-06-19
  • 打赏
  • 举报
回复
所以可以支流迭代器(自己写吧
提及 2019-06-19
  • 打赏
  • 举报
回复
我记得桶排序不需要随机访问吧 https://blog.csdn.net/developer1024/article/details/79770240 顺序读取元素就行了呀
sdghchj 2019-06-19
  • 打赏
  • 举报
回复
一般只有底层为数组的数据结构才能拿来sort,比如vector,因为数组支持索引随机访问,才可以任意两两交换。 而像基于链表的list,因不能随机访问,所以不能排序。 sort要求的RandomAccessIterator.
提及 2019-06-19
  • 打赏
  • 举报
回复
istream_iterator 迭代器支持的操作太少了,满足不了 sort的条件

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧