1. ホーム
  2. c++

[解決済み] C++でstd::sortを使って配列をソートする方法

2022-03-03 09:51:05

質問

標準テンプレートライブラリの使用方法 std::sort() として宣言された配列を並べ替えるために int v[2000] ;

C++は、配列の開始インデックスと終了インデックスを取得することができる何らかの関数を提供していますか?

どのように解決するのですか?

C++0x/11では、次のようになります。 std::begin std::end は配列に対してオーバーロードされます。

#include <algorithm>

int main(){
  int v[2000];
  std::sort(std::begin(v), std::end(v));
}

C++0xにアクセスできない場合、自分で書くのは難しくない。

// for container with nested typedefs, non-const version
template<class Cont>
typename Cont::iterator begin(Cont& c){
  return c.begin();
}

template<class Cont>
typename Cont::iterator end(Cont& c){
  return c.end();
}

// const version
template<class Cont>
typename Cont::const_iterator begin(Cont const& c){
  return c.begin();
}

template<class Cont>
typename Cont::const_iterator end(Cont const& c){
  return c.end();
}

// overloads for C style arrays
template<class T, std::size_t N>
T* begin(T (&arr)[N]){
  return &arr[0];
}

template<class T, std::size_t N>
T* end(T (&arr)[N]){
  return arr + N;
}