涼宮こなた 2020-05-13 13:07 采纳率: 100%
浏览 316
已采纳

取用vector<bool> 的元素,提示是临时变量不能引用传参?

如果把bool改成int就不会报错,为什么要特意这么设计?
我还是第一次听说,大佬们这种情况都是怎么处理的。
取地址也试了,当然也是不被允许的,,,
void change(bool& n){
        if(n)n=0;
        else n=1;
}
int oddCells(int n, int m, vector<vector<int>>& indices) {
        vector<bool> r(n,0);
        vector<bool> c(m,0);
        for(vector<int> i:indices){
            change(r[i[0]]);//报错
            change(c[i[1]]);//报错
        }
        int a=num1(r);
        int b=num1(c);
        int result=a*m+b*n-a*b;
        return result;
}

报错信息

  • 写回答

1条回答 默认 最新

  • 铁血乳娃娃 2020-05-13 14:30
    关注

    vector《bool》有其特殊性,不能算真正意义上的容器,他在底层为了减小存储空间,每一个bool值都是一位一位进行存储的,在节省空间的情况下会导致
    最后的访问效率变低。由于这种特殊性,他的返回值比如r[0]是个右值,所以应当避免使用vector《bool》 如果对于存储空间要求没有这么高建议改成vector《int》
    或者使用vector《BOOL》

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)