读书人

deque为何报错呢//.

发布时间: 2013-07-08 14:13:00 作者: rapoo

deque为什么报错呢//......................



error C2664: “std::_Deque_iterator<_Ty,_Alloc,_Secure_validation> std::deque<_Ty>::insert(std::_Deque_const_iterator<_Ty,_Alloc,true>,const _Ty &)”: 不能将参数1 从“BYTE [100]”转换为“std::_Deque_const_iterator<_Ty,_Alloc,_Secure_validation>”





#include "stdafx.h"
#include <deque>
#include <afxmt.h>
#include <iostream>
using namespace std;
std::deque<BYTE> h264Buffer;

int _tmain(int argc, _TCHAR* argv[])
{
BYTE buffer[100];
for(int i = 0;i<100;i++)
buffer[i] = 0x12;
h264Buffer.insert(buffer,100);
BYTE* buffer2 = new BYTE[100];
for(int i=0;i<100;i++)
{
buffer2[i] = h264Buffer.front();
h264Buffer.pop_front();
}
for(int i=0;i<100;i++)
cout<< buffer2[i] << " ";
cout<<endl;
return 0;
}

[解决办法]
insert需要一个iterator指明要插入的位置。
此外,insert和assign中只有一种含义是接收元素数量作为参数的,就是用一个重复n次的值来填充容器。比如:

h264Buffer.assign(100, 0 );//用100个0填充容器,结束后容器中有100个元素,都是0.
h264Buffer.insert(h264Buffer.end(), 100, 0 );//把100个0添加到容器末尾,结束后容器中增加100个元素。


楼主想要做的应该是:

h264Buffer.insert(h264Buffer.end(), &buffer[0], &buffer[100]);

由于此时h264Buffer没有元素,用下面的代码也是同样效果:

h264Buffer.assign(&buffer[0], &buffer[100]);

读书人网 >C++

热点推荐