繁体   English   中英

对于 long long 数据类型,C++ 中是否有 lower_bound() function?

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

posq下限的迭代器。 这里q是一个 long long integer 并且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 及以上版本。 但是,如果您确定要声明的变量的语法和类型,最好手动声明它,而不是让程序推断它。 它将增加程序的可靠性和可读性

希望这能解决您的问题!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM