gpt4 book ai didi

c++ - 将 vector 传递给函数

转载 作者:行者123 更新时间:2023-11-28 05:36:39 26 4
gpt4 key购买 nike

在尝试清理我的代码时,我遇到了一个我似乎无法弄清楚的问题。我正在尝试将 vector 值传递给函数,以便我可以在函数中而不是在主代码中进行计算,但我不知道如何正确传递 vector 。

#include "stdafx.h"
#include <vector>
#include <random>
#include <string>
#include <fstream>
#include <algorithm>
#include <iterator>

int population_size = 10;
int number_of_variables = 3;

struct one_individual
{
std::vector<std::vector<double>>chromosomes;
double evaluation1 = 0;
double evaluation2 = 0;
double evaluation3 = 0;
double fitness = 0;
double probability = 0;
};

std::vector<one_individual> individuals;

double evaluation(std::vector<one_individual> individuals[i])
{
individuals[i].evaluation1 = 1 * individuals[i].chromosomes[0].at(0) + 2 * individuals[i].chromosomes[0].at(1) + 3 * individuals[i].chromosomes[0].at(2);
individuals[i].evaluation2 = 1.5 * individuals[i].chromosomes[0].at(0) + 3 * individuals[i].chromosomes[0].at(1) + 4.5 * individuals[i].chromosomes[0].at(2);
individuals[i].evaluation3 = 2 * individuals[i].chromosomes[0].at(0) + 4 * individuals[i].chromosomes[0].at(1) + 6 * individuals[i].chromosomes[0].at(2);

individuals[i].fitness = 1 / (individuals[i].evaluation1 + individuals[i].evaluation2 + individuals[i].evaluation3);

return individuals[i].fitness;
}

int main()
{
std::random_device rd;
std::mt19937 rng(rd()); // random-number engine (Mersenne-Twister in this case)
std::uniform_real_distribution<double> dist(-10.0, 10.0);

for (int i = 0; i < population_size; i++)
{
std::vector<double>variables;
for (int j = 0; j < number_of_variables; j++)
{
variables.push_back(dist(rng));
}
individuals[i].chromosomes.push_back(variables);
}


for (int i = 0; i < population_size; i++)
{
evaluation(individuals[i]);
std::cout << "Individual " << i << " has fitness of " << individuals[i].fitness;
}
}

我已尝试尽可能地压缩代码,以免读起来太多,我认为仍然存在的所有内容都需要实际存在。

无论如何,我尝试将 vector 的值传递给函数的所有方法都不起作用,遗憾的是我能找到的答案并没有为我消除我的错误。

非常感谢任何帮助!

最佳答案

如果你想遍历 vector 并一次处理一个元素,你只需要传递被迭代的类型

double evaluation(one_individual& person)
{
// do stuff with person
}

要迭代你的 vector ,你会做类似的事情

for (auto& person : individuals)
{
evaluation(person);
}

关于c++ - 将 vector 传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38143967/

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