c++ - 通过 xarray 中的索引分配值分配整个数组
问题描述
我使用 C++ 的“xtensor”库。在它的帮助下,我尝试创建一个包含用户数据的数据表类。有时我需要通过用户 ID 列表对一些用户组数据进行子集化。对于这个任务,我使用布尔标志系统来标记我想要复制到新表的用户。
class UserDataTable {
private:
xt::xarray<bool> which;
//... more code
}
UserDataTable::UserDataTable(int size){
//... more code
std::vector<std::size_t> shape(size, 1);
std::vector<bool> boolinit(size);
which = xt::adapt(binit, shape);
//... more code
}
在子集函数中有以下代码:
for(int usercounter=0; usercounter<USER_LIST_COUNT; usercounter++){
std::string id = userlist(usercounter);
if(indexMap.count(id)>0){
int index = indexMap[id];
which(index) = true;
}
}
但是这行代码:which(index) = true; 将“true”值分配给所有“which”数组元素。我究竟做错了什么?
解决方案
std::vector<bool>
是一个特例。operator[]
返回参考std::vector<bool>::reference
和
std::vector<bool>::reference
通过对整个底层向量的潜在读取或写入发生的对向量的任何读取或写入 。
推荐阅读
- vbscript - 需要通过 VBScript 重命名特定文件夹中的多个文件
- java - AdapterPost.java 中的“java.lang.NumberFormatException:null”错误
- regex - 为什么我不能在 PowerShell 的替换运算符中转换匹配标记?
- macos - 在 Mac Catalina 中运行可执行文件时出错
- javascript - 从受 SSL 保护的 HTTPS React JS Web 应用程序连接本地连接的打印机
- mapbox - Mapbox GL-JS中同时在地图上的两个光标
- python - 获得额外的 Python 打印输出行?
- excel - 如何使用 VBA 查找单元格、引用另一个单元格以及删除具有相同文本的行
- c++ - 将 HWND 转换为 LPWSTR?
- javascript - React Class 将陈旧的道具传递给子无状态组件