簡體   English   中英

是std :: vector :: begin()-1未定義嗎?

[英]Is std::vector::begin() - 1 undefined?

我需要以向后的順序遍歷某些元素,並且正在使用:

for ( /* ... */ it = vec.end() - 1, end = vec.begin() ; it >= end ; --it ) {
    // ...

現在,我為某些容器(包括矢量end() - 1定義了end() - 1 ,但現在我需要知道是否也定義了開始減量。

編輯

我不知道是否可以使用reverse_iterator,因為我需要將這些迭代器作為參數傳遞給std :: vector :: erase,從文檔中看,它們是不同的類型。

是的,它是未定義的。

如果要反向遍歷元素,只需使用rbeginrend 它們是反向迭代器,專門為此目的而設計。 如果需要從反向迭代器中獲取標准迭代器,則可以在迭代器上使用base成員函數

這是不確定的行為。 但是,為什么不使用反向迭代器rbegin()rend()呢?

std::vector<int> vec{0,1,2,3,4}
for (auto it = vec.rbegin(); it != vec.rend(); ++it) 
{
  std::cout << *it << " ";
}
std::cout << std::endl;

輸出

4 3 2 1 0

暫無
暫無

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

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