C++ 成对向量c+的上界+; #包括 #包括 #包括 #包括 #包括 #包括 使用名称空间std; typedef对; 内联布尔小于秒(常数对和b1、常数对和b2){ 返回b1.second秒; int EP=ptr->first; 据我所知,你从未将任何数据放入SP向量中。你的意思可能不是int SP=ptr->second;而是SP.push_back(ptr->second);
作为旁注,由于排序不稳定,所以在使用谓词对其排序之前调用C++ 成对向量c+的上界+; #包括 #包括 #包括 #包括 #包括 #包括 使用名称空间std; typedef对; 内联布尔小于秒(常数对和b1、常数对和b2){ 返回b1.second秒; int EP=ptr->first; 据我所知,你从未将任何数据放入SP向量中。你的意思可能不是int SP=ptr->second;而是SP.push_back(ptr->second);,c++,algorithm,visual-c++,data-structures,stl-algorithm,C++,Algorithm,Visual C++,Data Structures,Stl Algorithm,作为旁注,由于排序不稳定,所以在使用谓词对其排序之前调用sort(pair.begin(),pair.end());是没有意义的 最后,您可能希望在中选择一本书来帮助您学习该语言。还可以使用distance(pair.begin(),up)而不是int(up-pair.begin()) #include <algorithm> #include <iostream> #include <iterator> #include <string> #in
sort(pair.begin(),pair.end());
是没有意义的
最后,您可能希望在中选择一本书来帮助您学习该语言。还可以使用distance(pair.begin(),up)
而不是int(up-pair.begin())
#include <algorithm>
#include <iostream>
#include <iterator>
#include <string>
#include <vector>
#include <utility>
using namespace std;
typedef pair<int,int> Pair;
inline bool less_than_second( const Pair& b1, const Pair& b2 ){
return b1.second < b2.second;
}
int main()
{
const int SP1[] = { 2,53,21,55,36,5,1};
const int EP1[] = { 18, 20, 26, 30, 41,1,5 };
int i;
const int num_pairs = sizeof( SP1 ) / sizeof( SP1[0] );
vector<int> sm(num_pairs);
// vector <int> SP;
vector<Pair> pair( num_pairs );
transform( EP1, EP1+num_pairs, SP1,pair.begin(), make_pair<int,int> );// MAKE PAIR
sort( pair.begin(), pair.end() );
sort( pair.begin(), pair.end(), less_than_second );
vector<Pair>::const_iterator pair_end = pair.end();
vector<int> SP,EP;
vector<int>::iterator low,up;
for( vector<Pair>::const_iterator ptr = pair.begin();ptr != pair_end; ++ptr )
{
int SP = ptr->second;
int EP = ptr->first;
cout<<"("<<SP<<","<<EP<<")\n";
}
//cout<<"("<<SP<<","<<EP<<")\n";
low=lower_bound (SP.begin(), SP.end(), 20);
up= upper_bound (SP.begin(), SP.end(), 20);
cout << "lower_bound at position " << int(low- SP.begin()) << endl;
cout << "upper_bound at position " << int(up - SP.begin()) << endl;
up= upper_bound (pair.begin(), pair.end(), 20);
cout << "upper_bound at position " << int(up - pair.begin()) << endl;
getchar();
}