您不能直接访问std::multimap
按索引的内容。但是您可以做的是将排序后的数据存储在中std::multimap
,然后将iterator
值存储在一个单独的文件中,std::vector
并将其用作ListView的数据源。当ListView按索引要求数据时,转到std::vector
并使用iterator
指定索引处的来访问中的数据std::multimap
。当您insert()
在中添加新项目时std::multimap()
,它会iterator
为该项目返回,并且现有iterator
不会因插入而无效。
std::multimap<MyItemData> mydata;
std::vector<std::multimap<MyItemData>::iterator> lvdata;
...
std::multimap<MyItemData>::iterator iter = mydata.insert(...);
lvdata.push_back(iter);
SendMessage(hwndLV, LVM_SETITEMCOUNT, lvdata.size(), LVSICF_NOINVALIDATEALL | LVSICF_NOSCROLL);
...
case LVN_GETDISPINFO:
{
NMLVDISPINFO *pdi = reinterpret_cast<NMLVDISPINFO*>(lParam);
std::multimap<MyItemData>::iterator iter = lvdata[pdi->item.iItem];
// use *iter as needed...
break;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句