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正确地指出你的向量没有元素为零.但即使它通过调整大小或其他机制,操作符[]不返回引用的事实仍然妨碍.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |