C和C ++中集合和映射值的下界索引

问题描述 投票:0回答:1

假设我想获取集合中某个值的lower_bound的索引,并且如果我键入

cout<<set.lower_bound(number)-set.begin()<<endl;

显示错误:“ operator-”不匹配

地图也一样,

但是,如果使用数组和向量,则为>]

lower_bound(begin,end,val)-begin 

显示索引

为什么?

假设我想获取集合中某个值的lower_bound的索引,并且如果我键入cout << []

c++ stl
1个回答
0
投票
是的,因为没有为-的迭代器定义运算符std::set,而为数组迭代器定义了运算符std::distance()。>>

相反,您可以使用std::distance(),如下所示

int main() { std::set<int> set {1, 2, 4, 5, 6}; int number = 3; std::cout<<std::distance(set.begin(), set.lower_bound(number))<<std::endl; }

© www.soinside.com 2019 - 2024. All rights reserved.