从" map<string, map<string ,string> > "插入到 wxListCtrl
insert to wxListCtrl from a " map<string, map<string ,string> > "
我有一个wxWidgets项目,其中包含2个.cpp文件。首先,它的目的是将3 wxComboBox中的数据获取到映射容器中,然后将这些数据插入到wxListCtrl中。
它的最后一部分不起作用,我不知道为什么,因为插入对我来说似乎是正确的(void ViewRefresh)
- ItemsInStock is a map<string, map<string ,string> >
- Category, ItemID and Name are wxComboBox
- RaktarLista_a and RaktarLista_b are wxListCtrl objects
hasznaltmobilbolt.cpp:的相关内容
int HasznaltmobilBolt::UploadNewItem(string tipus,string azonosito, string nev)
{
int i;
map<string, string> m;
m.insert({tipus,nev});
ItemsInStock.insert({azonosito,m});
return 1;
}
以及wxkitMain.cpp:的相关内容
void wxkitFrame::OnAddButtonClick(wxCommandEvent& event)
{
string tipus=Category->GetLabel().ToStdString();
string azonosito=ItemID->GetLabelText().ToStdString();
string nev=Name->GetLabelText().ToStdString();
int i=H.UploadNewItem(azonosito, nev, tipus);
ViewRefresh(H.ItemsInStock);
*Message << "Adding new item is done.n";
}
void wxkitFrame::ViewRefresh(map<string, map<string ,string> > Map)
{
RaktarLista_a->ClearAll();
RaktarLista_a->InsertColumn(0,"Azonosito", wxLIST_FORMAT_CENTER, 100);
RaktarLista_a->InsertColumn(1,"Nev", wxLIST_FORMAT_CENTER, 100);
RaktarLista_a->InsertColumn(2,"Tipus", wxLIST_FORMAT_CENTER,100);
RaktarLista_b->ClearAll();
RaktarLista_b->InsertColumn(0,"Azonosito", wxLIST_FORMAT_CENTER, 100);
RaktarLista_b->InsertColumn(1,"Nev", wxLIST_FORMAT_CENTER, 100);
RaktarLista_b->InsertColumn(2,"Tipus", wxLIST_FORMAT_CENTER,100);
int i=0;
for (map<string, map<string ,string> >::iterator it_azonosito=Map.begin();
it_azonosito!=Map.end();it_azonosito++)
{ for(map<string ,string>::iterator it_nev=it_azonosito->second.begin();
it_nev!=it_azonosito->second.end();it_nev++)
{
RaktarLista_a->InsertItem(i, it_azonosito->first);
RaktarLista_a->SetItem(i, 1, it_nev->first);
RaktarLista_a->SetItem(i, 2,it_nev->second);
RaktarLista_b->InsertItem(i, it_azonosito->first);
RaktarLista_b->SetItem(i, 1, it_nev->first);
RaktarLista_b->SetItem(i, 2,it_nev->second);
i++;
}
}
}
如果没有更好的分析,这有点难说,但我会尝试用引用替换ViewRefresh。我真的不知道是否有一个有效的运算符=或复制ctor来处理按值传递操作。
只需尝试更改为:
void wxkitFrame::ViewRefresh(map<string, map<string ,string> > &Map)
{
...
}
一个增强可以是添加一个const来保护输入参数不受意外更改的影响,但随后您需要将迭代器更改为const_iterator。例如:
void wxkitFrame::ViewRefresh(const map<string, map<string ,string> > &Map)
{
...
}
有点猜测,但我希望我能帮助你。
相关文章:
- cppcheck在const std::string[]上引发警告
- 将std::string传递给WriteConsole API
- 为std::string的某个索引赋值
- std中有类似find_last_of的函数,而string中没有
- EASTL矢量<向量<int>>连续的
- 使用 std::string () const 函数启动线程或未来
- 使用char类型将decimal转换为string,将string转换为decimal
- 迭代和比较映射<字符串、矢量<string>> c++ 中的值
- 当我们进行一些操作时,应该使用什么'std::string'或'std::stringstream'?
- 将向量解析<string>为字符串
- 'string.assign(string.data(), 5)' 是明确定义的还是 UB?
- 如何更改大小(std::string)
- "string.h"在构建适用于iOS的qt应用程序中找不到消息
- C++:如何将 unix 时间的字符串转换为 *tm?(使用时间错误:"cannot convert 'String' to 'tm*' ")
- std::string 的对象真的可以移动吗?
- 与'operator='不匹配(操作数类型'String'且"void")
- SegFault 同时使用 std::string::operator+= 和函数作为参数
- 无法从 std::string 中提取C++ Unicode 符号
- std::string 构造函数如何处理固定大小的 char[]?
- <string> 使用 for 循环写入向量