Chinaunix

标题: 关于map <int, char*> [打印本页]

作者: princemaozh    时间: 2006-07-21 23:56
标题: 关于map <int, char*>
使用map <int, char*> 的时候,读出来的字符串不是存进去的。

有什么注意点吗?
作者: lenovo    时间: 2006-07-22 00:06
〉〉读出来的字符串不是存进去的。
这句没看懂。
作者: princemaozh    时间: 2006-07-22 08:45
map<int, char*> employee;

employee.insert(1, "tom"),  
employee.insert(2, "mike"),
。。。,  


然后 通过key (比如数字2), 找到某个item (mike)
iter->second() 并非mike, 编程了随机字符。

是不是char*用在map中的时候,有什么注意啊?
作者: phoneix    时间: 2006-07-22 10:41
你应该用map<int, string>,char*只是一个指针,鬼晓得被指向的位置以后会变成什么样子
作者: NetSnail    时间: 2006-07-22 13:38
放到容器内的东西会被复制一次的,如果不想进行复制,又怕泄露的话,可以用bosst::shared_ptr,然后
map<int, shared_ptr<string> >
作者: unicorns    时间: 2006-07-22 17:52
用map<int,string>
因为用char*的话,当你向map插入数据的时候
只有指针的值会被复制.
而这个指针指向的内容在插入完成后是可能改变的.
作者: galaxywar    时间: 2006-07-22 23:33
原帖由 princemaozh 于 2006-7-22 08:45 发表
map<int, char*> employee;

employee.insert(1, "tom"),  
employee.insert(2, "mike"),
。。。,  


然后 通过key (比如数字2), 找到某个item (mike)
iter->second() 并 ...

employee.insert(1, "tom"),  
employee.insert(2, "mike"),
这个代码应该没问题, 如果真的是这两行的话.
插入的只是个指针, 你要保证它指向的内存没有被修改,甚至被释放. 否则很容易core dump. 上面两行的字符串是静态区, 取出来应该是不会变的.




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2