c++ - 返回 bool 作为 cpp 中 bool operator[] 中的值
问题描述
所以基本上我有一个包含布尔值(true,false)的std :: vector容器,我需要一个operator [],但是当我返回具有正确索引的值(bool)时,它给了我一个错误this: 无法将“bool&”类型的非 const 左值引用绑定到“bool”类型的右值|
我的操作员看起来像这样:
bool& operator[] ( unsigned int idx) {
typename std::vector<bool>::iterator retval;
for (typename std::vector<std::vector<bool> *>::iterator it = data.begin(); it != data.end(); ++it) {
for (typename std::vector<bool>::iterator cont_it = (*it)->begin(); cont_it != (*it)->end(); ++cont_it) {
if (idx == 0) {
retval = cont_it;
}
idx--;
}
}
return *retval;
}
以及给出错误的调用:
ivb[0] = false;
ivb[1] = true;
解决方案
@Jarod42 的回答稍有改善:
std::vector<bool>::reference operator[](unsigned int idx) {
for (auto &inner : data) {
if (idx < inner.size()) {
return inner[idx];
}
idx -= inner.size();
}
throw std::runtime_error("out of range");
}
并假设所有内部向量的大小相同:
std::vector<bool>::reference operator[](unsigned int idx) {
// vectors_sizes = data[0].size()
if (idx >= vectors_sizes * data.size())
throw std::runtime_error("out of range");
return data[idx / vectors_sizes][idx % vectors_sizes];
}
推荐阅读
- python - 新数据框,其中包含在付款当月支付的债务百分比
- python - 如何在 Linux 中为 Google Cloud 设置 CLOUDSDK_PYTHON?
- python - GluonTS DeepAR 预测非确定性
- sql - sql 父母的孩子和孩子的孩子
- c - C 中的动态内存分配(返回值 3221225477 和分段错误:11)
- python - 如何用 for 循环编写这样的表达式?粒子[:, 2] %= 2 * np.pi python
- directx-11 - DirectX11 - 实例化顶点的缓冲区大小,大小不一
- python - Python:将文本文件拆分为多个工作会话
- java - Oracle AQ / Oracle JMS 的最新 Javadoc
- rest - Camunda REST - 如何获得流表达的可能性