私はHW割り当ての一部としてマップを実装しています。マップは2種類のイテレーターをサポートする必要があります。イテレータのタイプが正しくありません
- イテレーター - マップを変更できます。
- constant_iterator - マップの変更を許可しません。
map_test.cpp:49:43: error: no viable conversion from 'Map<basic_string<char>, int>::iterator' to 'Map<std::string, int>::const_iterator' for(Map<std::string,int>::const_iterator it = msi.begin(); it != msi.end(); ++it) { ^ ~~~~~~~~~~~ ./map_new.h:57:3: note: candidate constructor not viable: no known conversion from 'Map<basic_string<char>, int>::iterator' to 'const Map<basic_string<char>, int>::const_iterator &' for 1st argument const_iterator(const Map<KeyType, DataType>::const_iterator& sIterator): ^
:私は次のような問題を取得し
for(Map<std::string,int>::const_iterator it = msi.begin(); it != msi.end(); ++it) { std::cout << *it << std::endl; }
:私は次のコードで私の実装をテストしかし
Map::const_iterator begin() const; Map::const_iterator end() const; Map::iterator begin(); Map::iterator end();
:
私は以下のメソッドを持っていますこれは、コンパイラが間違ったbegin/end mを選択したことを意味します。エトド
どうすればこの問題を解決できますか?
しかし、これは問題を回避するだけでしょうか? –
@Doppelgangerいいえ、問題を解決するはずです。これは、標準のライブラリコンテナで行われます。 – juanchopanza
本当に、問題を解決してくれてありがとう。 [より洗練されたソリューションが存在すると確信していました] –