C++ STL : advance
動機
標準ライブラリコンテナを巡るときにiterator(反復器)でコンテナ内の要素にアクセスすることに慣れています.よく使われる習慣的な使い方は:
上記のプログラムの
定義#テイギ#
公式std::advanceに関するドキュメント:std::advance reference it:反復変数 n増加する必要があるベクトル長 使用法
プログラム出力:
まとめ std::advanceは反復器をオフセット操作するために使用される 使用前に を含める.
標準ライブラリコンテナを巡るときにiterator(反復器)でコンテナ内の要素にアクセスすることに慣れています.よく使われる習慣的な使い方は:
std::vector<int> vec;
vec.push_back(100);
vec.push_back(101);
vec.push_back(102);
vec.push_back(103);
vec.push_back(104);
std::vector<int>::iterator it;
std::cout << *it << std::endl;
it+=2;
std::cout << *it << std::endl;
上記のプログラムの
it+=2
は、反復器を後方に移動する2つの要素である.標準ライブラリは、上記の式、すなわちstd::advance(it,2)の代わりに標準的なテンプレート操作を提供し、advanceの英語の意味は増加し、前進することである.その名の通り、反復器はn個の位置を前に押す.定義#テイギ#
公式std::advanceに関するドキュメント:std::advance reference
template<class InputIt, class Distance>
void advance(InputIt& it, Distance n);
#include
#include
#include
int main()
{
std::vector<int> v{ 3, 1, 4 };
auto vi = v.begin();
std::advance(vi, 2);
std::cout << *vi << '
';
}
プログラム出力:
4
まとめ
ヘッダファイル