こんにちは。
プログラムの保守を請け負っているのですが、独自に実装されているリストクラスがありまして、
それをfor eachで操作できるようにとの指示がありました。
処理系はC++です。
CFooArrayというクラスだとしまして、内部にCFooDataというクラスをdequeで持っています。
要望としては
CFooArray arrayFoo ;
for each( CFooData fooData in arrayFoo )
{
}
とできるようにしてほしいとのことですが、そもそもfor eachで扱えるコレクションクラスを
どう実装していいのかが分かりません。またdequeを外に出すのはナシと言われました。
どなたかご存じの方がいらっしゃいましたら教えていただけないでしょうか。
参考サイトでも紹介していただければ幸いです。
No.3ベストアンサー
- 回答日時:
なにがなんでも for each じゃなきゃダメですか?
range-based for なら簡単に実装できますが。
#include <iostream>
#include <deque>
using namespace std;
typedef int CFooData;
class CFooArray {
typedef std::deque<CFooData> container_type;
public:
typedef container_type::iterator iterator;
void add(const CFooData& data) { data_.push_back(data); }
// begin()とend()を定義すればrange-based for が使える。
iterator begin() { return data_.begin(); }
iterator end() { return data_.end(); }
private:
container_type data_;
};
int main() {
CFooArray array;
array.add(1);
array.add(2);
array.add(3);
for ( CFooData item : array ) {
cout << item << endl;
}
}
詳細な返答ありがとうございます。
なぜfor eachではなければならないかを確認したところC#でと構文が同じだからだそうです。
リストを拝見しました。
こういう実装の仕方があるのかと目から鱗です。
とても参考になります。
for ( CFooData item : array )でよいか確認してみます。
No.4
- 回答日時:
#3 補足
Visual C++ なら
for ( CFooData item : array ) を
for each ( CFooData item in array ) と書いてもいいみたい。
for each はあくまで Visual C++ の独自仕様だろうからオススメしません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) outlook マクロが終了しません。 1 2022/09/02 11:14
- Excel(エクセル) vbaで列幅について 1 2022/11/15 08:31
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) VBA Bookの表示、非表示 1 2022/09/16 20:44
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) 【VBAエラー】Nextに対するForがありません 対策について 5 2022/11/21 21:26
- HTML・CSS VS.NETのコードを色合いも含めてHtmlに貼り付けたい。 1 2023/02/02 14:15
- Excel(エクセル) 開いているフォルダを全て閉じる、マクロを教えて下さい 3 2022/08/28 08:42
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エディットコントロールのイベ...
-
FriendとPublicの違い。。。
-
既定のコンストラクタがない?
-
個々の関数について継承してい...
-
C++では構造体がメンバ関数をも...
-
クラスのアドレスを引数として...
-
MFCアプリのコマンドラインでパ...
-
MessageBoxを継承したい
-
OnInitDialog()の関数の組み込み方
-
form1 から form2 へのデータの...
-
イベントにAddHandlerされてい...
-
IncludeではなくClassで宣言す...
-
(UWSC) 「#32770」の意味わかり...
-
スプラッシュコントロールの挿...
-
C++ protectedにアクセス不可
-
フォーム間でのオブジェクト又...
-
コンソールアプリでのクリップ...
-
MFCのドラッグ&ドロップについて
-
C++でJavaのStaticイニシャライ...
-
変数の後の点々
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FriendとPublicの違い。。。
-
既定のコンストラクタがない?
-
(UWSC) 「#32770」の意味わかり...
-
クラスのアドレスを引数として...
-
ダイアログ表示時にチェックボ...
-
イベントにAddHandlerされてい...
-
【ASP.NET】 独自で作成したク...
-
MFCアプリのコマンドラインでパ...
-
DebugクラスとTraceクラスの違い
-
ボタンのオーナードローについて
-
OnInitDialog()の関数の組み込み方
-
IncludeではなくClassで宣言す...
-
関数の呼び出し元の検索
-
このコンパイルエラーの意味に...
-
C++ protectedにアクセス不可
-
C++で継承元のクラスの代入演算...
-
DataGridViewのセルに斜線を引...
-
C#で通常のbuttonコントロール...
-
エディットコントロールのイベ...
-
CMainFrameクラスの使い方
おすすめ情報