キューの各項目に-1を乗じるエレガント(短い)方法(queue.ForEachは存在しないようです)は、キュー全体それを別のキューに書き込むことができます。インプレースでそれを行う方法はありますか?C#queueすべての項目に-1を掛けます。
-1
A
答えて
6
編集:私はこの質問がなぜ落とされたのか、または投票に投票したのか分かりません。それは完全に合理的な質問です。
あなたがしたいすべてがキュー内の要素を取得している場合は否定:「否定」は、キューの内容を変更しても動作し続けること
var negated = myQueue.Select(x => -x);
foreach(int x in negated) ...
注意を!クエリオブジェクトは、列挙されたときに評価され、作成されたときには評価されません。
myQueue
はまったく変更されません。 negated
は、要素が列挙されるときに要素を否定する単純なラッパーです。
2
Queuesは、アイテムがキューの後ろに書き込まれる(エンキュー)か、キューの先頭から読み取られる(peek/dequeue)ことができるように設計されています。キューの途中でアイテムを変更するだけでは、定義された操作ではありません。したがって、ForEach
メソッドが存在しても、データ構造の目的を無効にする傾向があります。
キューまたはデキュー時にアイテムを否定する方がよいでしょう。あなたが本当にしたかった場合には、例えば、拡張メソッドを書くことができます:
public static class QueueExtensions
{
public static int DequeueAndNegate(this Queue<int> queue)
{
return queue.Dequeue() * -1;
}
// -- or --
public static void NegateAndEnqueue(this Queue<int> queue, int value)
{
queue.Enqueue(value * -1);
}
}
var queue = new Queue<int>(new[] { 1, 2, 3 });
while (queue.Count > 0)
{
Console.WriteLine(queue.DequeueAndNegate()); // -1 -2 -3
}
あなたが本当に例えば、あなたは別のデータ構造を使用する必要があり、アイテム自体の変更を可能にするデータ構造が必要な場合a List<int>
。
関連する問題
- 1. MySQL:1つの行のすべての値に2を掛けます。
- 2. メニュー項目はすべてのメニューボタンを押し続けます
- 3. すべての項目
- 4. 各項目のすべての配列項目をループする
- 5. CSSメニュー - すべてのメニュー項目は、ホバー1のときに表示されます。メニュー項目
- 6. mysql - すべての項目を1つの行に返します
- 7. EXCEL:他のすべての個別項目の列項目数
- 8. C#データベースの行からすべての項目を取得
- 9. 最初の項目を除くすべての項目に対してjquery removeClass?
- 10. ViewBinderは、すべてのListView行の1つの項目を変更します。
- 11. Azure Queueトリガーがnullキュー項目を誤って与える
- 12. C#でBindingListの項目を並べ替えますか?
- 13. 各サブリストの項目を他のすべてのサブリスト(python)のすべての項目に一致させる
- 14. Cで多項式を掛け合わせることについて
- 15. すべての項目のチェックボックス
- 16. オートコンプリートのテキストビューでアダプターの項目に選択項目を関連付けます
- 17. SQLクエリは、すべての項目が
- 18. Css float:left;すべての項目
- 19. すべてのサブメニュー項目が
- 20. asp.net c#ドロップダウンリストfindbytextは項目を追加し続けますか?
- 21. foreachループはリスト内のすべての項目をループしません - C#
- 22. テキストボックスの値を3番目に掛け合わせて返します
- 23. C#での掛け算表
- 24. タプルを文字列リストに変換して1行に1つの項目を付けます
- 25. R:カラムYに1行を掛けた値をX、2行目の列Y
- 26. 1番目のリストの項目のインデックスで2番目のリストに項目を追加します
- 27. Applescript- grepが見つけたすべての項目について
- 28. コンテンツのサイズを掛けるときにスクロールバーの位置を掛けるC#
- 29. C#リスト内のすべての項目のフィールドを同じ値に設定
- 30. PHPでRSSフィードの項目を1つだけ解析する
'queue.ForEach'は読み込み専用のメソッドであり、とにかくやりたいことをしません。 (ちょうど 'foreach'のように) –
うーん、間違ったコレクションオブジェクトを使用すると-100ポイントはありません。なぜあなたはあなたがこれを行う必要があると思うかを説明していないとき、0より上になることは非常に困難です。 –
@HansPassantに同意すると、間違ったコレクションが使用されている可能性があります。あなたがやっていることは無駄で、なぜそれが.....であるのかを特定しました。 – FirebladeDan