C++でiterator
からconst_iterator
を取得するにはどうすればよいですか? insert_iterator
のconst_iterator
はどうですか?結果として得られるiterator
は元の場所と同じ場所を指すはずです。const_iteratorへのC++イテレータ
15
A
答えて
22
コンテナはconst_iterator
に変換タイプとしてiterator
提供するために必要とされるので、あなたは、暗黙的に変換することができます:
Container::iterator it = /* blah */;
Container::const_iterator cit = it;
std::insert_iterator
sが出力イテレータです。これにより、順方向イテレータでなければならない通常のContainer::iterator
に変換する方法はありません。
別の種類の挿入イテレータはこのようなことを許可しますが、標準機能から得られたものは許可しません。
私はあなたがが、保護されたメンバーiter
を公開std::insert_iterator
周りに独自のラッパーを書くことができますね。
template <typename Container>
class exposing_insert_iterator : public std::insert_iterator<Container> {
public:
exposing_insert_iterator(std::insert_iterator<Container> it)
: std::insert_iterator<Container>(it) {}
typename Container::iterator get_iterator() const {
return std::insert_iterator<Container>::iter;
}
};
// ...
std::insert_iterator<Container> ins_it;
exposing_insert_iterator<Container> exp_it = ins_it;
Container::iterator it = exp_it.get_iterator();
4
あなたがそれらを変換することができます。例:
std::vector<int> v;
std::vector<int>::iterator it = v.begin();
std::vector<int>::const_iterator cit = it;
しかし、私はそれがあなたが求めている答えではないと思います。コードを表示する:-)
関連する問題
- 1. イテレータからconst_iteratorを取得
- 2. イテレータとconst_iteratorの比較は非効率的ですか?
- 3. イテレータとconst_iterator(STL)の効率が異なる
- 4. 特定の型へのC++イテレータ
- 5. const_iterator型の戻り値からイテレータへの実行可能な変換がありません
- 6. カスタムテンプレートクラスのC++イテレータ
- 7. C++コンテナのイテレータ
- 8. リストのC++イテレータ
- 9. Djangoテンプレート - イテレータへのレンダリング
- 10. C言語のイテレータ
- 11. C++イテレータの問題
- 12. C++イテレータ、インターフェイス、ポインタ
- 13. C++イテレータとリンクリスト
- 14. 奇妙なconst_iteratorの行動
- 15. CのPythonスタイルのイテレータ
- 16. C#のポインタ、イテレータとジェネリック
- 17. C++イテレータのパイプライン設計
- 18. C++:マップからイテレータを消去した後、次のイテレータ
- 19. C++ STL unordered_mapイテレータ問題
- 20. タイプ消去C++出力イテレータ
- 21. 奇妙な行動やSTD ::マップ:: const_iteratorの
- 22. C#でのイテレータのメモリ使用量
- 23. C++でのイテレータの重要性
- 24. 標準のC++イテレータを書くには?
- 25. try-catch-finallyのC++/CLIイテレータ例外
- 26. イテレータと循環参照のC++コンテナ
- 27. C++イテレータの比較アサーション失敗
- 28. 標準ベクトルconst_iterator代入アクセス違反
- 29. C++イテレータと私は(実際に、それは私の現在のオブジェクトの<code>const_iterator</code>であり、私もまた<code>reverse_const_iterator</code>を作成したい<code>iterator</code>を書いてイテレータ
- 30. ++イテレータとイテレータ++のパフォーマンスの違いは?
キャスティングは機能しませんか? – Pubby
@ Pubby8:キャストは必要ありません! –
ええ、私は台無しにしているに違いない。暗黙的に変換しようとしたときにコンパイラエラーが発生したと思いました。 –