2016-06-14 4 views
-3

チャネル値> 0.1のときにチャネル番号を格納するプログラムを作成しました。 私はすでに反復を定義しています。 ループでは、繰り返しは異なるチャネルで実行されます(たとえば、チャネル番号1、チャネル番号2など)。 次に、私は値を計算するために他のプログラムを呼び出しました。各チャンネルの値を1つずつ計算します。 私の仕事は、Channel Value> 0.1のチャンネルを取得することです。私はそれらのチャンネル番号を保存する方法を知らない。あなたが私を助けることができれば非常に高く評価されます。ありがとう。特定の条件が満たされたときに変数を格納するためにC++で繰り返し実行

list <int> GetChannels(Node* node) 
{ 

list<int> Channels = GetList(node); //calling a list which I already defined. 
list<int>::iterator itr; 
for (itr=Channels.begin(); itr!=Channels.end(); ++itr) { 
    double ChannelValue = CalculateValue(node, *itr); //calling another func 
    if (ChannelValue > 0.1) { 

`

+0

私はコードを編集できるように編集しました。ありがとう – noman

+0

それはまだ読めません!あなたは 'if'ステートメントの本文を見逃しています! – Sean

+0

@sean、私はそこに何が入るのかという疑問があると思う。私の質問はどの言語ですか? C++またはC#。 –

答えて

0

あなたは値を返すために別のリストを作成できますか?

list <int> GetChannels(Node* node) { 

    list<int> Channels = GetList(node); //calling a list which I already defined. 
    list<int> output; // Output list. 
    list<int>::iterator itr; 
    for (itr=Channels.begin(); itr!=Channels.end(); ++itr) { 
     double ChannelValue = CalculateValue(node, *itr); //calling another func 
     if (ChannelCapacityValue > 0.1) { 
      output.insert(*itr); 
     } 
    } 
    return output; 
} 
+0

ありがとうございました。ベン: – noman

0

私は、正確な要件を取得する場合、あなただけのCalculateValue(node, *itr) > 0.1fある特定の述語を介して既存のコレクションをフィルタリングすることにより、リストを構築する必要があります。

これは一種の、std::copy_ifのためのタスクを思わ:STLはすでに右施設をご提供していたときに

list<int> channels; 
list<int> filteredChannels; 

... 

copy_if(channels.begin(), channels.end(), back_inserter(filteredChannels), 
    [node] (const int& value) { return CalculateValue(node,value) > 0.1f; } 
); 

車輪の再発明はなぜ?

C++ 11ラムダにアクセスできない場合は、カスタム関数を用意してください。 bool isValidChannel(const int& channel) { ... }しかし、これにはnodeパラメータをバインドする必要があります。

+0

ありがとうございました。あなたの答えは本当に役に立ちます:) – noman

関連する問題