C++ 中是否有用于 long long 数据类型的 lower_bound() 函数?
Is there a lower_bound() function in C++ for long long data type?
pos
是 q
下界的迭代器。这里 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及以上使用。但是,如果您确定要声明的变量的语法和类型,最好手动声明它,而不是让程序推断它。它将提高程序的可靠性和可读性。
希望这能解决您的问题!
pos
是 q
下界的迭代器。这里 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及以上使用。但是,如果您确定要声明的变量的语法和类型,最好手动声明它,而不是让程序推断它。它将提高程序的可靠性和可读性。
希望这能解决您的问题!