修复错误没有匹配函数,以便在std :: vector <std :: vector <uc>&gt;中调用'assign'。 LUM; </的std ::矢量<UC>

时间:2014-02-14 03:10:42

标签: c++ vector

我有来自c ++的参考代码:

typedef unsigned char UC;
std::vector<std::vector<UC> > lum;
int h;
int w;

这行代码:

lum.assign(h,w);

我编译了这段代码并得到了错误: 没有匹配成员函数来调用'assign'

如何修复此错误?我可以替换这个功能的匹配功能吗?

2 个答案:

答案 0 :(得分:1)

该错误是正确的,因为这意味着您正在尝试分配h的{​​{1}}金额(无论h的值是多少){{1 }}

但是,由于w要求指定为实例的值是已分配的类型(也称为assign),因此您实际需要将值指定为类型{{1 }}

与您的代码相比,您试图为2-D向量分配一个整数值,如前所述,与value_type vector<UC>不匹配}(value_type - 这解释了你得到的错误。 为什么?因为 2-D矢量实际上是矢量(某种类型)的矢量。因此,您只能将该类型的矢量指定给a二维矢量别的

换句话说,这样的事情应该是正确的代码:

lum

但是,当您尝试填充二维向量时,我只能猜测您正试图以某种任意方式分配或初始化向量。根据您的意愿,这种方法可能不合适。

参考:

http://www.cplusplus.com/reference/vector/vector/assign/

答案 1 :(得分:0)

assign的重载是void assign( size_type count, const T& value );,其中Tvector<UC>assign(int, int)的函数调用不匹配。

void assign( size_type count, const T& value );

template< class InputIt >
void assign( InputIt first, InputIt last );

void assign( std::initializer_list<T> ilist );

正确的通话类似于:assign(h, vector<UC>(w))