std::vector<T> のイテレータを関数の戻り値として使いたい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: std::vector<T> のイテレータを関数の戻り値として使いたい

Re: std::vector<T> のイテレータを関数の戻り値として使いたい

#3

by CAMATA » 4年前

うまくいきました!
こんなに単純なことだったんですね…
ありがとうございます

Re: std::vector<T> のイテレータを関数の戻り値として使いたい

#2

by みけCAT » 4年前

よくわかっていないですが、std::vector<T>::iteratorの前にtypenameを加えるといいかもしれません.

typenameなし

typenameあり

std::vector<T> のイテレータを関数の戻り値として使いたい

#1

by CAMATA » 4年前

Win10 / Visual Studio 2019 の C++ を使っています。
次のようなテンプレートクラスを動作させたいのですが、メンバ関数 begin と end の行で
「C2061 構文エラー: 識別子 'iterator'」のようなエラーがでてしまいます。
コンテナの iterator は、そのまま戻り値の型として使うことはできないのでしょうか?

コード:

#include <vector>

template <class T> class MyVector {
private:
  std::vector<T> m_vector;
public:
  void add(T value) {
    m_vector.push_back(value);
  }
  std::vector<T>::iterator begin() { // <==== エラー!!
    return m_vector.begin();
  }
  std::vector<T>::iterator end() { // <==== エラー!!
    return m_vector.end();
  }
};

int main() {
  MyVector<int> values;
  values.add(1);
  values.add(2);
  for (auto it=values.begin(); it!=values.end(); it++) {
    // 反復
  }
  return 0;
}

ページトップ