[英]Is there a lower_bound() function in C++ for long long data type?
pos
是q
下限的迭代器。 这里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.