gpt4 book ai didi

C++ vector 问题

转载 作者:行者123 更新时间:2023-11-30 02:12:49 24 4
gpt4 key购买 nike

好吧,我很可能有一个非常愚蠢的问题,但无法解决,我快要失去理智了,希望有人能帮忙

vector<CvMat*> sample;
for(int x = 0; x < 29; x += 2)
{
for(int b = 0; b < 22; b += 2)
{
cvmSet(g, 0, b, cvmGet(NormalVector, 0, x + b));
cvmSet(g, 0, b + 1, cvmGet(NormalVector, 0, x + b + 1));
}
sample.push_back(g);
}

好吧,我正在使用 OpenCv 进行一些矩阵计算,basiacllay 我正在做的是从一个大矩阵创建一些小矩阵,并将它们放入此处称为“样本”的 vector 中。第一个循环只是一个基于计数器的东西,第二个循环在第二个循环之后循环创建小矩阵,我将它们放入 vector

但问题是在这些循环之后,当我尝试到达 vector 中的矩阵之一时,我总是得到最后放入 vector 中的矩阵。我使用这些方法来访问 vector 元素
sample [0];
示例.at(6);
对于这两个,我得到了最后添加到 vector 中的相同矩阵。我做错了什么?

最佳答案

由于您的示例 vector 是一个指针 列表,您需要确保为每个CvMat 创建一个新实例添加到 vector 中的元素。否则,听起来您的所有元素都指向同一事物 (g)。

如果 CvMat 有一个复制构造函数,您可以通过这样做来修复它:

vector <CvMat> sample;
for(int x =0 ; x<29; x+=2) {
// ...
sample.push_back(*g);
}

这会创建一个 CvMat objects vector ,push_back(*g) 会复制矩阵并将其推送到 vector 的背面。

关于C++ vector 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1355202/

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