通过xarray中的索引分配值分配整个数组

时间:2018-08-02 09:08:52

标签: c++ xtensor

我使用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; 为所有“哪个”数组元素分配“真”值。 我在做什么错了?

1 个答案:

答案 0 :(得分:3)

std::vector<bool>是一个特例。 operator[]返回引用std::vector<bool>::reference

  

任何读取或写入通过向量发生的向量   std::vector<bool>::reference可能会整体读取或写入   基础向量。