未だに、結構こういう、くだらない事を忘れてしまい。試すとか、よくあります。
#include <vector>
#include <iostream>
#include <algorithm>
int main() {
std::vector<int> v;
// 10, 20, ..., 90 と整列した配列に対して
for( int i = 1; i < 10; ++i ) v.push_back( i * 10 );
// 25 を挿入したい
std::vector<int>::iterator f = std::lower_bound( v.begin(), v.end(), 25 );
// 挿入する位置は、わかったが、後からアクセスする場合に備えて
// 場所を覚えておきたい
int pos = std::distance( v.begin(), f );
// とりあえず挿入
v.insert( f, 25 );
// 挿入された位置は、ここですよ
std::cout << pos << std::endl;
// ほんまかいな?
std::cout << v[ pos ] << std::endl;
// ちゃんと並んでますか?
for( int i = 0; i < 10; ++i ) { std::cout << v[i] << ","; }
}
追記: コメントもらった。
C++11 だと、insert が 挿入位置を返すので単に
f = v.insert( f, 25 );
で、OKのようです。
0 件のコメント:
コメントを投稿