STL中一个容器的元素中包含另一个容器的问题
本帖最后由 lclqqq 于 2011-04-28 14:53 编辑
STL中一个容器的元素中包含另一个容器的问题
想实现类似下面的一个结构。
- #include <iostream.h>
- #include <list>
- #include <ext/hash_set>
- using namespace __gnu_cxx;
- using namespace std;
- #define HTMAX 10003
- typedef struct{
- char Name[24];
- list<int> mylist;
- }info_t;
- class info_caculate
- {
- public:
- int operator()(const info_t& info) const
- {
- int h=0;
- int i;
- for(i=0;info.Name[i];i++)
- h = (h*211 + (info.Name[i] -32) + 7)%103;
- h = abs(h);
- return h;
- }
- };
- class info_equal
- {
- public:
- bool operator()(const info_t& Ainfo, const info_t& Binfo) const
- {
- if(!strcmp(Ainfo.Name, Binfo.Name))
- return true;
- else
- return false;
- }
- };
- int main(int argc, char **argv)
- {
- info_t info;
- hash_set<info_t, info_caculate, info_equal> ht;
- hash_set<info_t, info_caculate, info_equal>::iterator si;
- list<info_t> infolist;
- list<info_t>::iterator li;
- strcpy(info.Name, "info1");
- ht.insert(info);
- si = ht.begin();
- si->mylist.push_back(10);
- infolist.push_back(info);
- li = infolist.begin();
- li->mylist.push_back(10);
- return 0;
- }
复制代码但在si->mylist.push_back(10);处会报错
main.cc:52: error: passing 'const std::list<int, std::allocator<int> >' as 'this' argument of 'void std::list<_Tp, _Alloc>::push_back(const _Tp&) [with _Tp = int, _Alloc = std::allocator<int>]' discards qualifiers
但下面使用的是list就没有问题,那位知道是什么情况?谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
回复 1# lclqqq
恩,原来hash_set的元素是不能修改的。呵呵,还是用hash_map吧