gpt4 book ai didi

c++ - 修复在 std::vector> lum 中调用 'assign' 时没有匹配函数的错误;

转载 作者:太空宇宙 更新时间:2023-11-04 11:39:52 26 4
gpt4 key购买 nike

我有来自 C++ 的引用代码:

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

这行代码:

lum.assign(h,w);

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

我该如何修复这个错误?这个函数有没有匹配的函数可以替换?

最佳答案

该错误是正确的,因为这意味着您正在尝试分配 h h 的值的数量(无论 w 的值是多少) .

然而,作为assign要求分配的值是分配类型的实例(又名 value_type ),那么您实际上需要将值分配为类型 vector<UC> .

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

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

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

UC initial = 'C';

vector<UC> vec(w, initial);
lum.assign(h, vec);

但是,当您试图填充二维 vector 时,我只能推测您正试图以某种任意方式分配或初始化 vector 。根据您希望执行的操作,此方法可能不合适。

引用:

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

关于c++ - 修复在 std::vector<std::vector<UC>> lum 中调用 'assign' 时没有匹配函数的错误;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21770132/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com