In [54]: test1=np.empty((5,),dtype=object)
In [55]: for i in range(5):
test1[i]=test.T.flatten()[i:i+11]
每当我运行该程序时,它都会给我以下错误 - >
错误7错误C2678:二进制' =' :找不到哪个运算符采用类型为' const CDrug'的左手操作数。 (或者没有可接受的转换)
答案 0 :(得分:2)
这是因为地图元素确实是这样的:
pair< const CDrug, ... >
不是pair< CDrug, ... >
它们的键类型是const,因为更改映射的现有元素中的键会导致麻烦。 (它会使元素不被排序,从而破坏一些地图不变量。)
因此,转换函数返回的对象无法分配给map元素=&gt;编译失败。
此外,您无法在地图上使用变换,因为您无法分配到地图迭代器(因为该键是const)。 因此,您应该使用for_each,如相关问题中所述:how to apply transform to a stl map in c++
类似的东西:
void expirednull(pair<const CDrug, pair<unsigned,double> > & temp)
{
if( temp.first.isValid == false )
temp.second.first = 0;
}
map< CDrug, pair<unsigned,double> > d;
for_each(d.begin(),d.end(),expirednull);