gpt4 book ai didi

c++ - 对 vector C++ 中的上界

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:53:21 24 4
gpt4 key购买 nike

#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();
}

我对这对 vector 进行了排序,我试图获取这对 vector 中一个 vector 的 upper_bound 值,但它给了我upper_bound 在位置 = 0。

请耐心等待,我是c++的新手,想学习。请帮助修复此代码。谢谢

最佳答案

据我所知,您从未将任何数据放入 SP vector 中。有可能不是 int SP = ptr->second; 你的意思是 SP.push_back(ptr->second);

作为旁注,由于排序不稳定,因此在使用谓词对其进行排序之前调用 sort( pair.begin(), pair.end() ); 没有意义。

最后,你不妨在The Definitive C++ Book Guide and List中挑选一本书帮助您学习语言。

关于c++ - 对 vector C++ 中的上界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7226275/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com