gpt4 book ai didi

C++变量在push_back之后没有传递它的值

转载 作者:行者123 更新时间:2023-11-27 23:42:16 25 4
gpt4 key购买 nike

我遇到了一个奇怪的问题,我声明的变量被推回了 vector<vector<pixel>>实际上并没有被推回......看看:

vector<pixel> Lignetemp;
for(int j = 0; j < InfoSup.nbL; j++){
Lignetemp.clear();
for(int i = 0; i < InfoSup.nbC; i++){
int Rtemp, Vtemp, Btemp;
cin >> Rtemp;
cin >> Vtemp;
cin >> Btemp;
Lignetemp.push_back({Rtemp,Vtemp,Btemp});
}
Data.push_back(Lignetemp);
}

像素是这样定义的:

struct pixel{
int R, V, B;
};

问题是,当我尝试打印数据时,我只得到 0,而不是我 cin 得到的值此外,我在 Windows 和 Linux(不同版本的 g++ 编译器)上进行编码,即在 Ubuntu 上,编译器会给我这些警告:

warning: extended initializer lists only available with -std=c++11 or -std=gnu++11

您有解决办法吗?谢谢:)

最佳答案

warning: extended initializer lists only available with -std=c++11 or -std=gnu++11

警告为您提供了线索。

您将初始化列表传递给 push_back 方法。就这个:{Rtemp,Vtemp,Btemp}

您可以:

  1. 将警告中提到的标志传递给您的编译器。如何通过它 - 取决于您的构建系统。

  2. 使用显式实例化:

    pixel p;
    cin >> p.R >> p.V >> p.B;
    Lignetemp.push_back(p);

关于C++变量在push_back之后没有传递它的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53621952/

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