局部Vector的有关问题
局部Vector的问题
map<char*, vector<char *> > m_mapNoDealTeam
void addNote(char * st,char* ms)
{
如果查找不存在,则新增
vector<char*> tv;
m_mapNoDealTeam.insert(map<char*, vector<char*>>::value_type(st, tv));
}
疑问:
因为在函数中生成了一个局部vector 类,请问离开addNote之后,是否再次引用map中的vector实例,是否有效,
简单来说,局部生成的这个vector 实例,离开函数后是否有效,谢谢各位高手
------解决思路----------------------
tv 离开函数之前就析构了。
不过 insert 的时候会复制 tv,所以 map 里存储的 tv 副本在函数外也会有效。
另外,tv 里面存的是 char*,这些家伙指向的内存在复制 vector 的时候是不会复制的,后面可能引起问题。
------解决思路----------------------
vector元素是指针,其析构时不会释放元素指向的内存,你看看vector类的源码就知道了。
这样不会有问题。
------解决思路----------------------
如果是指,不管是什么样的指针,都能在insert过程中复制。不用担心这个问题。
map<char*, vector<char *> > m_mapNoDealTeam
void addNote(char * st,char* ms)
{
如果查找不存在,则新增
vector<char*> tv;
m_mapNoDealTeam.insert(map<char*, vector<char*>>::value_type(st, tv));
}
疑问:
因为在函数中生成了一个局部vector 类,请问离开addNote之后,是否再次引用map中的vector实例,是否有效,
简单来说,局部生成的这个vector 实例,离开函数后是否有效,谢谢各位高手
------解决思路----------------------
tv 离开函数之前就析构了。
不过 insert 的时候会复制 tv,所以 map 里存储的 tv 副本在函数外也会有效。
另外,tv 里面存的是 char*,这些家伙指向的内存在复制 vector 的时候是不会复制的,后面可能引起问题。
------解决思路----------------------
vector元素是指针,其析构时不会释放元素指向的内存,你看看vector类的源码就知道了。
这样不会有问题。
------解决思路----------------------
如果是指,不管是什么样的指针,都能在insert过程中复制。不用担心这个问题。