[英]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.