0

に機能のリストを挿入しようとしていますvector。その後、基準関数 (つまり、数式) の結果に基づいて機能を追加します。これまでのコードを以下に示します。

ここで質問したい主な部分は次のとおりです。

  1. ここで作った方法で機能を挿入するのは良い考えだと思いますか? つまり、構造体のベクトルとして? それとも、すぐに機能を追加しますか? 構造体のベクトルを作成した理由は、整数値をベクトルに追加したいと同時に、機能の名前 (つまり、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 ints、4 の 4 つのグループのための部屋と私はちょうど 4 が欲しいと思います)。

機能に常に 4 つの int がある場合は、構造体に固執します。それらに名前を付けて可変量にしたい場合は、Map のようなものを使用する必要があります。

于 2012-07-18T15:53:58.700 に答える