C++ 中是否有用于 long long 数据类型的 lower_bound() 函数?

Is there a lower_bound() function in C++ for long long data type?

posq 下界的迭代器。这里 q 是一个 long long 整数, prefix 是一个存储 long long 元素的向量。

vector <int> :: iterator pos; 
pos = lower_bound(prefix.begin(), prefix.end(), q);

我收到以下错误:

no operator "=" matches these operands -- operand types are: __gnu_cxx::__normal_iterator<int *, std::vector<int, std::allocator<int>>> = __gnu_cxx::__normal_iterator<long long *, std::vector<long long, std::allocator<long long>>>

有什么办法可以解决这个问题吗?

您的 pos 声明不正确。您的矢量 - prefix 被声明为 vector<long long>prefix;。迭代器也应该是相同的类型。

您可以尝试使用以下 -

vector<long long>::iterator pos = lower_bound(prefix.begin(), prefix.end(), q);

如果您不确定如何正确声明变量(在本例中为迭代器),您也可以选择以下语法:

auto pos = lower_bound(prefix.begin(), prefix.end(), q);

auto关键字只能在C++11及以上使用。但是,如果您确定要声明的变量的语法和类型,最好手动声明它,而不是让程序推断它。它将提高程序的可靠性和可读性

希望这能解决您的问题!