我正在尝试基于权重向量(A)的值的比较来对位置矢量(V)的值进行排序。我创建了一个struct的向量来链接这两个向量,就像我在一些论坛中看到的那样,但是,我的程序没有编译,我不明白为什么。这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fstream>
#include <sstream>
#include <stdbool.h>
#include <time.h>
#include <math.h>
#include <cstdlib>
#include <numeric>
#include <algorithm>
#include <iostream>
#include <list>
#include <numeric>
#include <random>
#include <vector>
int main(int argc, char **argv)
{
struct WeightsAndPositions {
std::vector<float> weights;
std::vector<int> positions;
bool operator() (WeightsAndPositions &i,WeightsAndPositions &j) { return (i.weights<j.weights);}
} weights_and_positions;
std::vector<WeightsAndPositions> WandP;
WeightsAndPositions tmp_WandP;
std::vector <float> A;
A.push_back(12);
A.push_back(4);
A.push_back(33);
A.push_back(10);
A.push_back(0);
A.push_back(5);
std::vector <int> V;
V.push_back(0);
V.push_back(1);
V.push_back(2);
V.push_back(13);
V.push_back(41);
V.push_back(5);
tmp_WandP.weights=A;
tmp_WandP.positions=V;
WandP.push_back(tmp_WandP);
sort(WandP.begin(), WandP.end(),tmp_WandP);
return EXIT_SUCCESS;
}
这是编译后得到的错误:
erreur: no match for call to ‘(main(int, char**)::WeightsAndPositions) (main(int, char**)::WeightsAndPositions&, const main(int, char**)::WeightsAndPositions&)’
我不明白为什么我有这个错误以及如何修复它。
如果有任何帮助,我将不胜感激,
感谢。