社区讨论
求问关于 -O2
学术版参与者 2已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @mlnbe82i
- 此快照首次捕获于
- 2026/02/15 13:38 4 天前
- 此快照最后确认于
- 2026/02/15 22:04 4 天前
rt,我在写 ODT(?)的时候用以下这段代码进行区间推平:
CPPint bulldoze(int l,int r){
split(l);
split(r);
int ts=0;
auto it=tr.lower_bound(l);
while(it!=tr.end()&&it->second<=r){
ts+=it->second-it->first+1;
it=tr.erase(it);
}
if(ts) tr[r-ts+1]=r;
}
但是这段代码在开 -O2 的情况下竟然会 RE!
有 dalao 知道这是怎么一回事嘛 qwq
(
tr 为一个 std::map<int,int>,假设 split() 函数没有问题,本地为 GCC 9.2.0,如果加入调试语句会发现抛出了 std::bad_cast)回复
共 3 条回复,欢迎继续交流。
正在加载回复...