簡體   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