gpt4 book ai didi

c++ - 查找作为 C++ 类元素的二维 vector 的位置

转载 作者:行者123 更新时间:2023-11-30 01:36:57 24 4
gpt4 key购买 nike

我正在上一门课,我在寻找类(class)元素之一的值位置时遇到了一些问题。我定义了我的类如下:

typedef class Chrom                                         
{
public:
vector<vector < int>> bit;
vector<vector < bool>> jobisconsidered;

vector<vector <float>> WaitingTime;
void variablesresize()
{
int i = 0, j, k;
float a;

std::vector<float> datapoints;
std::ifstream myfile("Input.dat", std::ios_base::in);

i = 0; //making zero counter of characters
myfile.open("Input.dat");//now we reread numerical values

while (!myfile.eof())
{
myfile >> a;
// cout << "i=" << i << '\n';
if (!myfile) // not an int
{
myfile.clear(); // clear error status
myfile.ignore(1); // skip one char at input
}
else
{
datapoints.push_back(a);
++i;
}
}

myfile.close();

Jobs = datapoints[0];
Machines = datapoints[1];

WaitingTime.resize(Machines);
bit.resize(Machines);

for (int i = 0; i < Machines - 1; ++i) WaitingTime[i].resize(Jobs);

bit[i].resize(Jobs);
}
}
} c;

c popcurrent[50];

在类中,bit 是一个二维元素,如果我将它定义为 m*n,则行中的所有值都相同。但是,当我想在 bit 中找到位置时,例如,如果 2 行 3 列的 popcurrent[0].bit 是 = { {3,2 ,1},{3,2,1} },我想找到 vector 中第一个“3”的位置是 0 和 popcurrent[0]。 bit[0][0]=3 ,我有问题。

特别是我试过c++ search a vector for element first seen position使用以下命令:

auto p = std::lower_bound(popcurrent[0].bit.begin(), popcurrent[0].bit.end(), 1);
int position = p - popcurrent[0].bit.begin();

但我得到以下错误:

 Error  109 error C2893: Failed to specialize function template
'unknown-type std::less<void>::operator ()(_Ty1 &&,_Ty2 &&) const'

我知道一种方法是使用 for 和 if 循环。但我想知道是否有更自动化的方法来执行此操作,例如内置函数。

最佳答案

一开始我没有注意到它 - 有太多不相关的代码 - 但问题很简单:你试图找到类型为 std::vector<int> 的第一个元素不小于类型的值 int .

popcurrent[0].bit.begin()指向 std::vector<std::vector<int>> 的第一个元素,那是一个 vector 。没有用于比较整数 vector 和整数的“小于”运算符。

关于c++ - 查找作为 C++ 类元素的二维 vector 的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50805299/

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