0

我试图在 a 中插入一个特征列表vector,然后根据标准函数的(即公式)结果添加一个特征。到目前为止的代码如下所示。

我想问的主要部分是:

  1. 您认为以此处制作的方式插入功能是一个好主意吗?也就是说,作为struct的向量?或者,只是立即添加功能?我制作 struct 向量的原因是我想将整数值添加到向量中,但同时要为特征命名(即 F1、F2、...等)。

  2. 对于criterionFunction()下面显示的内容,我正在尝试考虑例如如果选择它(即;传递给函数)则features[1]具有该值,否则。这里好像发生了什么事?:-) 你建议在这里做什么?10boolean


#include "stdafx.h"
#include <iostream>
#include <vector>

int main(){
    std::struct Features{ int F1, F2, F3, F4; };

    std::vector<Features> listOfFeatures(4);
    for(std::vector<Features>::iterator i = listOfFeatures.begin(); i != listOfFeatures.end(); i++)
    {
        std::int maxValue = criterionFunction(*listOfFeatures);
    }
}

std::int criterionFunction(std::int *features)
{
    return
        -2*features[1]*features[2]
        +3*features[1]
        +5*features[2]
        -2*features[1]*features[2]*features[3]
        +7*features[3]
        +4*features[4]
        -2*features[1]*features[2]*features[3]*features[4];
}

谢谢。

4

2 回答 2

2

这是编译并类似于 C++ 的东西,我希望它对您有所帮助:

编辑添加了算法以实际将所有特征转换为标准列表并获得这些特征的实际最大值。

#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>

struct Features{ int F1, F2, F3, F4; };

int criterionFunction(Features const& features)
{
    return
        -2*features.F1*features.F2
        +3*features.F1
        +5*features.F2
        -2*features.F1*features.F2*features.F3
        +7*features.F3
        +4*features.F4
        -2*features.F1*features.F2*features.F3*features.F4;
}
int main(){

    std::vector<Features> listOfFeatures(4);
    // TODO fill listOfFeatures

    std::vector<int> listOfCriterion;
    std::transform(listOfFeatures.begin(), listOfFeatures.end(), 
            std::back_inserter(listOfCriterion), 
            criterionFunction);

    int maxValue = *std::max_element(
            listOfCriterion.begin(), listOfCriterion.end());
}
于 2012-07-18T15:52:33.787 回答
0

我有一段时间没有接触 C++,但我对你想要做什么感到困惑。根据您的问题和示例代码,我觉得您混淆了向量的作用。

向量是可以动态调整大小的对象的集合。你打电话时

std::vector<Features> listOfFeatures(4);

您正在收集4个 Features 结构。(即 16 个整数的空间,4 个 4 组,我认为你只想要 4 个)。

如果一个特征中总是有 4 个整数,我会坚持一个结构。如果您想命名它们并具有可变数量,则需要使用 Map 之类的东西。

于 2012-07-18T15:53:58.700 回答