C++ - 选择一组功能

C++ - selecting a set of features

本文关键字:一组 功能 选择 C++      更新时间:2023-10-16

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

这里我想问的主要部分是:

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

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


#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];
}

谢谢。

这里有一些编译和类似于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());
}

我已经有一段时间没有碰过C++了,但我对你想做什么感到困惑。 根据您的问题和示例代码,我的印象是您混淆了矢量的作用。

矢量是可以动态调整大小的对象的集合。 当您致电时

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

您正在创建 4 个功能结构的集合。 (即可容纳 16 个整数的房间,4 组 4 个,我认为您只需要 4 个(。

如果功能中总是有 4 个整数,我会坚持使用结构。如果你想命名它们并且有一个可变的数量,你需要使用类似地图的东西。