私はgcc 4.8.1を使用しており、何時間もかけて不可解なパフォーマンスの問題をデバッグした後、std::list::size
が実際には の呼び出しとして実装されていることがわかりましたstd::distance
。
/** Returns the number of elements in the %list. */
size_type
size() const _GLIBCXX_NOEXCEPT
{ return std::distance(begin(), end()); }
std::list::size の複雑さは一定である必要があり、の複雑さstd::distance
は線形であるとリファレンスに記載されているため、これは私を驚かせましたstd::list::iterator
。
gcc は C++11 機能の優れたサポートを提供していると思いますが、これを実装しない理由が見当たらないので、私は本当に混乱しています。
これはリファレンスまたは gcc のエラーですか?
後者の場合:
このような基本的な C++11 機能が長い間欠落している理由はありますか?
3 番目の可能性はありますか。
gcc 4.8.1 を使用できますが、標準ライブラリの古いバージョンを使用できますか?