C++ STLiterator lower_bound( const key_type &key ) 函数用法,返回一个迭代器,指向键值>= key的第一个元素。iterator upper_bound( const key_type &key ) 函数用法,返回一个迭代器,指向键值> key的第一个元素。
在同一个键(key)上调用lower_bound和upper_bound,将产生一个迭代器范围(类似equal_range(const key_type &key)),指示出该键所关联的所有元素。
如果该键在容器中存在,则会获得两个不同的迭代器:lower_bound返回的迭代器指向该键关联的第一个实例,而upper_bound返回的迭代器则指向该键关联的最后一个实例的下一个位置。如果该键不在multimap中,这两个操作将返回同一个迭代器,指向依据元素的排列顺序该键应该插入的位置。
举例vector<int> nums;
nums.push_back( -242 );
nums.push_back( -1 );
nums.push_back( 0 );
nums.push_back( 5 );
nums.push_back( 8 );
nums.push_back( 8 );
nums.push_back( 11 );
cout << "Before nums is: ";
for( unsigned int i = 0; i < nums.size(); i++ ) {
cout << nums[i] << " ";
}
cout << endl;
vector<int>::iterator result;
int new_val = 7;
result = lower_bound( nums.begin(), nums.end(), new_val );
nums.insert( result, new_val );
cout << "After, nums is: ";
for( unsigned int i = 0; i < nums.size(); i++ ) {
cout << nums[i] << " ";
}
cout << endl;
输出:
Before nums is: -242 -1 0 5 8 8 11
After, nums is: -242 -1 0 5 7 8 8 11