コレクション型のC++実装を作成しました。 開発者が "for each"ステートメントを使用できるように反復サポートを追加したいと思います。 どうすればいいですか?あなたの論理コンテナ内の最初と1-過去のエンドポイントへのイテレータ:foreach反復サポートをC++の自分のコレクションクラスに追加するにはどうすればよいですか?
答えて
標準イディオムがある:ようなタイプiterator
とconst_iterator
を公開し、最低限の二つの機能、すなわち、begin()
とend()
を提供:
template</*.....*/>
class Collection
{
public:
typedef /*...*/ iterator;
typedef /*...*/ const_iterator;
iterator begin();
iterator end();
const_iterator begin() const;
const_iterator end() const;
};
あなたはこれらを実装したら、あなたのコレクションはstd::for_each
で、ロットで使用することができます<algorithm>
で定義されている他のアルゴリズム関数。
これはC++専用ですか。 –
気にしないで、std :: for_eachを書いたことを実現しました。 –
@Che:これは標準のC++です。 foreachはC++/CLIになります... – MFH
あなたがfor_each
アルゴリズムを意味すると仮定すると、あなただけの標準begin
とend
コンテナメソッドを表し何かが必要。
STLのfor_each
アルゴリズムを意味する場合、STLコンテナのようにbegin()
とend()
を定義する必要があります。
C++ 0xの範囲ベースのforループを意味する場合は、同じことを行うことができます。
using namespace std;
// very very simple container class
class Cont {
public:
Cont() {}
typedef char* iterator;
iterator begin() {return arr;}
iterator end() {return &arr[200];}
private:
char arr[200];
};
void setit(char &it) {
it = 'a';
}
// iterator must provide ++ operation for for_each algorithm (char* in this example works this way)
int main() {
Cont c;
for_each(c.begin(), c.end(), setit);
copy(c.begin(), c.end(), ostream_iterator<char>(cout, ","));
return 0;
}
- 1. ユーザーが自分のウェブサイトから自分のページに自分のアプリケーションを追加できるようにするにはどうすればよいですか?
- 2. CrafterCMSでは、反復グループの項目にICEを追加するにはどうすればよいですか?
- 3. JavaFXのGridPaneにラベルを反復的に追加するにはどうすればよいですか?
- 4. 複数のforeach反復を単一のLINQに変更するにはどうすればよいですか?
- 5. 同じ変数を自分自身に追加するにはどうすればよいですか?
- 6. XElement反復要素を追加するにはどうすればよいですか?
- 7. 自分のサービスをBLEアプリケーションに追加するにはどうすればよいですか?
- 8. Github:自分のプロジェクトを「組織」アカウントに追加するにはどうすればよいですか?
- 9. 反応内でコレクションクラスを使用するにはどうすればよいですか?
- 10. 反復でリストをコピーするにはどうすればよいですか?
- 11. Anki - 自分のフィールド記述子を追加するにはどうすればよいですか?
- 12. 各ループ反復でボタンを追加するにはどうすればいいですか?
- 13. 反応追加リンクNavbarへの外部リンクを追加するにはどうすればよいですか?
- 14. C#でボタンを追加するにはどうすればよいですか?
- 15. C++でクラスを追加するにはどうすればよいですか?
- 16. C++でライブラリを追加するにはどうすればよいですか?
- 17. Ubuntuで自分のパスにディレクトリを追加するにはどうすればいいですか?
- 18. スラックAPIでスラックチャットボックスに自分のボタンを追加するにはどうすればいいですか?
- 19. foreachループでカンマ区切りの値にテキストを追加するにはどうすればよいですか?
- 20. リストを反復処理するにはどうすればよいですか?
- 21. リストを反復処理するにはどうすればよいですか?
- 22. C#:2つのリストボックスを個別に反復処理するにはどうすればよいですか?
- 23. 編集したオープンソースプロジェクトを自分のプロジェクトに追加するにはどうすればいいですか?
- 24. bible.orgウィジェットを自分のサイトに追加するにはどうすればいいですか?
- 25. foreachループ内の変数リストに 'Get'ステートメントを追加するにはどうすればよいですか?
- 26. foreach文を現在の定義に追加するにはどうすればよいですか?
- 27. 非反復部分文字列の総数を取得するにはどうすればよいですか?
- 28. このarraylistを反復するにはどうすればいいですか?
- 29. rxjsを拡張して自分のオペレータを追加するにはどうすればいいですか?
- 30. 自分のパブリックメソッドにアクセスするにはどうすればよいですか?
C++にはforeach文がありません。 foreachを行うC++ 11のforループのタイプがあります - それはどういう意味ですか?あなたはforループで使うことができるという意味ですか?またはBOOST_FOREACHを見ていますか? –
私はVisual Studio 2008にforeachが実装されていると思います – James
私はそれをここで見ました...それはC++でしかないことを認識していませんでした。 http://msdn.microsoft.com/en-us/library/ms177203.aspx Microsoft! –