c++11っぽくstd::vectorでindexをfindしたい

こんにちは。ヤマヤタケシです。
やっぱりC++だね!
c++11っぽくstd::vectorでindexをfindしたい!
ルー大柴か!

さて、配列の中の要素を探すという、基本的なことだからこそ、STLっぽくやりたい!

今回、欲しいのは配列の番号であり、値じゃない。
しかし、std::findで探せるのはiteratorだから、しょうがなくこう書きました。

これはもはやC言語と同じだ!
C++っぽくないぜよ?

改めて検索すると、さすが世界のStackoverflowですね。
良い答えがありました。これはSTLっぽい!
Stackoverflowから引用です。

引用ここまで。
std:distance。そんなものがあるんですね。素晴らしい!

ふふ、覚えたてのautoを使って、c++11っぽくこうしよう。

これで俺もC++11の人の仲間入りだ!

そんじゃまた。

軽い気持ちで有名になりたいのでクリックをお願いします!

c++11っぽくstd::vectorでindexをfindしたい” への4件のコメント

  1. indexを返す時点でC++っぽくない

    template size_t findIndex( value_type value, container m_array)
    {
    auto iter = std::find(m_array.begin(), m_array.end(), value);

    if(iter != m_array.begin()){
    return iter – m_array.begin();
    }
    return -1;
    }

  2. コンパイル確認はしていないがこっちのが方がC++っぽい。

    template
    size_t findIndex( value_type value, container m_array)
    {
    auto iter = std::find( m_array.begin(), m_array.end(), value);

    size_t index = std::distance( m_array.begin(), iter );

    if(index == vec.size())
    {
    return -1;
    }

    return index;
    }

    • ありがとうございます。
      関数までもテンプレートにする余地があったんですね。
      勉強になります。

コメントを残す

メールアドレスが公開されることはありません。