关于deque<> push_back问题
听说push_back是以拷贝的形式在内存里面创建一个新变量并添加?
为嘛我声明一个数组:char arr[10];
然后给arr strcpy一个常量字符串,然后push_back进去,然后修改arr中的
字符串再push_bak。。。
为什么后续我用iterator遍历的时候得到的都是最后一次给arr赋的值?
我的deque是这么声明的:deque<char *> DEQUE;
附:
- C/C++ code
#ifndef _FARQ /* specify standard memory model */ #define _FARQ #define _PDFT ptrdiff_t #define _SIZT size_t#endif /* _FARQ */。。。void _Construct(_T1 _FARQ *_Ptr, const _T2& _Val){ // construct object at _Ptr with value _Valvoid _FARQ *_Vptr = _Ptr;::new (_Vptr) _T1(_Val);}inline void *__CRTDECL operator new(size_t, void *_Where) _THROW0() { // construct array with placement at _Where return (_Where); }这个_FARQ干嘛用的? 这个new用的也很让我费解。。。求解
[解决办法]
然后给arr strcpy一个常量字符串,然后push_back进去,然后修改arr中的
字符串再push_bak。。。
这样肯定就是,最后的你输入的值,因为deque容器中是个指针,你加进去,始终是指向arr的首地址
[解决办法]
你的类型是deque<char *> 所以入队列的是字符指针类型的。所以你修改数据肯定是会变化的咯
[解决办法]
你pash_back进去的是arr的地址,改变的是arr所指地址的内容