下面的程序,一个简单的向量sorting,在第二次调用时崩溃t> = 17。 第一种sorting成功,即使吨== 100.奋斗了很长一段时间,但我无法弄清楚什么是错的。 有人可以帮帮我吗?
我已经在MacBook Air以及Linux机器上尝试过了,出人意料的是,我看到了相同的结果。
#include<iostream> #include<vector> #include<algorithm> using namespace std; struct tc { unsigned int n; }; bool sort_by_n( tc a,tc b ) { return an <= bn; } vector<tc> tcv(100); vector<int> tv(100); int main() { unsigned int t; cin >> t; for ( unsigned int i = 0 ; i < t ; i++ ) { cin >> tcv[i].n; tv[i] = tcv[i].n; } sort( tv.begin(),tv.begin()+t); // ## This one works even for t == 100. sort( tcv.begin(),tcv.begin()+t,sort_by_n ); // ## This one crashes for t >= 17 return 0; }
read()失败,地址错误,valgrind显示Syscall参数读取(buf)指向无法寻址的字节(s)
无法理解下面的macros
如何以编程方式更改映射驱动器的标签?
如何将单个头文件应用到C项目的其余部分,以便不再需要它?
分析字节(C Windows)
为什么不能从主函数返回更大的值?
一个进程可以通过一个systemtap探针停止,所以gdb可以连接?
试图填写只有类名的文本框
使用realloc()会在传递特定内存值后导致分段错误
你需要提供严格的弱排序,但是
bool sort_by_n( tc a,tc b ) { return an <= bn; }
只是一个弱项。 如果元素相同,严格的弱顺序必须返回false 。 您需要将其更改为:
bool sort_by_n( tc a,tc b ) { return an < bn; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。