簡體   English   中英

如何獲得 ::iterator of const std::vector<T>

[英]How to get ::iterator of const std::vector<T>

我想從const std::vector<T>獲取iterator ,但找不到向編譯器解釋的方法。 這是它的樣子:

(const std::vector<T>)::iterator

解決方法:typedef 或使用

template<typename T>
using const_vec = const std::vector<T>;
const_vec::iterator ...

更新。 std::vector::iterator 就是例子。 問題是關於 C++ 語法的。

const限定符不會更改有關類型定義的任何內容。 因此, iterator在型const std::vector<T>是相同std::vector<T> 只需使用

std::vector<T>::iterator

或者,如果T是模板參數,則使其成為依賴名稱:

typename std::vector<T>::iterator

不過,您可能不想要iterator ,因為沒有std::vector<T>函數可以在const限定實例上返回iterator 你可能想要const_iterator代替。

通常,您無論如何都不需要訪問迭代器類型別名。 您可以從變量定義中的auto獲取正確的類型:

const std::vector<T> vec{/* ... */};
auto it = vec.begin();

如果您需要類型本身,或者使用decltype

const std::vector<T> vec{/* ... */};
using iterator = decltype(vec.begin());

您可以使用std::vector<int>::const_iterator例如:

const std::vector<int> v{ 1, 2, 3, 4, 5 };
std::vector<int>::const_iterator it = v.begin();

或者只是利用auto像:

const std::vector<int> v{ 1, 2, 3, 4, 5 };
auto it = v.begin();

您應該閱讀文檔vector.begin()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM