主题:求救,急!!!!
cy645309003 [专家分:510] 发布于 2008-09-05 14:34:00
[size=5]lower_bound()和upper_bound()是什么意思啊?有什么用啊?[/size]
回复列表 (共6个回复)
沙发
bruceteen [专家分:42660] 发布于 2008-09-05 15:26:00
try it yourself
e.g: 0 2 4 6 8
你在其中分别 lower_bound(4),lower_bound(5),upper_bound(4),upper_bound(5) 看看得到什么
板凳
cy645309003 [专家分:510] 发布于 2008-09-05 15:55:00
怎么弄啊?通不过编译啊
lower_bound()和upper_bound()返回值是什么?在哪个头文件里面?
3 楼
ppc [专家分:3090] 发布于 2008-09-05 16:44:00
#include <algorithm>
lower_bound()是找到第一个可以插入的位置。
upper_bound()是找到最后一个可以插入的位置。
[code=c]
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;
[/code]
4 楼
cjcse [专家分:1910] 发布于 2008-09-05 16:50:00
ls正解;
或者自己google一下,比来这里快多了。
5 楼
cy645309003 [专家分:510] 发布于 2008-09-05 17:02:00
谢了啊
google我早就go了.....没看懂的
6 楼
bruceteen [专家分:42660] 发布于 2008-09-05 17:04:00
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int buf[] = { 2, 4, 6, 8 };
size_t LEN = sizeof(buf)/sizeof(buf[0]);
int* p1 = lower_bound( buf+0, buf+LEN, 4 ); // 4
int* p2 = lower_bound( buf+0, buf+LEN, 5 ); // 6
int* p3 = upper_bound( buf+0, buf+LEN, 4 ); // 6
int* p4 = upper_bound( buf+0, buf+LEN, 5 ); // 6
int* p5 = lower_bound( buf+0, buf+LEN, 0 ); // 2
int* p6 = upper_bound( buf+0, buf+LEN, 8 ); // 8之后
return 0;
}
可见lower_bound返回一个小于指定值的区域,即
[ 开始,lower_bound的返回值 ) 这个区域的元素都小于 lower_bound参数指定的值。
[ upper_bound的返回值, 结束 ) 这个区域的元素都大于 upper_bound参数指定的值。
我来回复