在C++中,unique函数返回的是去重后的范围的尾部的迭代器,而不是去重后的个数。所以在计算去重后的个数时,需要用unique函数返回的迭代器减去数组的起始地址b,并再减去1。

而lower_bound函数返回的是在指定范围内第一个不小于给定值的元素的迭代器,所以不需要减1。lower_bound函数返回的迭代器指向的位置,即是原数组中第一个不小于给定值的元素的下标。

所以在离散化中,通过unique函数去重后,得到的数组b中的元素个数是e,通过lower_bound函数将原数组a中的元素映射到去重后的数组b中的下标位置。

为什么c++离散化中:int e = uniqueb+1 b+1+n-b-1; 去重并得到去重后的个数	forint i = 1; i n+1; i++ai = lower_boundb+1 b+1+e ai-b;unique要减一lower_bound不需要

原文地址: https://www.cveoy.top/t/topic/iAnE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录