首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于deque<> push_back有关问题

2012-06-01 
关于deque push_back问题听说push_back是以拷贝的形式在内存里面创建一个新变量并添加?为嘛我声明一个数

关于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所指地址的内容

热点排行