加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – cin到bools的向量

发布时间:2020-12-16 10:33:07 所属栏目:百科 来源:网络整理
导读:我有这个代码: #include iostream#include vectorusing namespace std;int main(){ vector bool v; cin v[0];return 0; } 为什么我不能这样做?编译器不会编译它,但我在向量中有其他变量类型,它可以正常工作.这有什么问题? 解决方法 这是因为std :: vector
我有这个代码:

#include <iostream>
#include <vector>

using namespace std;

int main(){
    vector <bool> v;
    cin >> v[0];
return 0;   
}

为什么我不能这样做?编译器不会编译它,但我在向量中有其他变量类型,它可以正常工作.这有什么问题?

解决方法

这是因为std :: vector< bool>是一种专业化,根本不像矢量.这被广泛认为是该标准的一个主要缺陷.

为了节省内存,vector< bool>将每个元素存储为单个位.但是位不能单独寻址,因此operator []不能返回bool&参考连接到一点.相反,它返回vector< bool> :: reference …并且cin不提供函数重载来处理这个问题.

(juanchopanza正确地指出你的向量没有元素为零.但即使它通过调整大小或其他机制,操作符[]不返回引用的事实仍然妨碍.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读