1. 程式人生 > >STL vector中的rbegin方法(5)

STL vector中的rbegin方法(5)

public member function <vector>

std::vector::rbegin

      reverse_iterator rbegin() noexcept;
const_reverse_iterator rbegin() const noexcept;
Return reverse iterator to reverse beginning 返回一個反向的首元素. 例子: #include <iostream>
#include <vector>
#include <iterator>
using namespace std;
int main()
{
vector<int> vi;
vi.push_back(5);
vi.push_back(999);
cout<<*vi.rbegin()<<endl;




}
執行結果:
可以看到,vi裡面元素排列順序為{5,999},而運用rbegin()返回的迭代器指向的正是最後一個元素的位置,但這個位置和end()的位置是不同的,因為end()指向的是最後一個元素再後面的一個位置(超尾迭代器).

Returns a reverse iterator pointing to the last element in the vector (i.e., its reverse beginning).

返回一個指向最後一個元素的反向迭代器 (相當於從後往前看)

Reverse iterators iterate backwards: increasing them moves them towards the beginning of the container.

反向迭代器的向後迭代:當增加該反向迭代器的時候其實該迭代器是向容器的開頭位置移動

例如:

#include <iostream>
#include <vector>
#include <iterator>
using namespace std;
int main()
{
vector<int> vi;
vi.push_back(5);
vi.push_back(999);
vi.push_back(222);
vector<int>::reverse_iterator vr=vi.rbegin();
cout<<*vr<<endl;
vr++;
cout<<*vr<<endl;




}

結果:


可以看到,vr++之後,vr的位置其實是向前移動了!

rbegin points to the element right before the one that would be pointed to by member end.

rbegin指向的元素位置剛好就是end()所指向的前一個。

Notice that unlike member vector::back, which returns a reference to this same element, this function returns a .

需要注意的是,不同於back(),back()返回的是一個引用,這個方法返回的是一個反向的隨機訪問迭代器。

Parameters

none

Return Value

返回值:

A reverse iterator to the reverse beginning of the sequence container.

返回一個反向迭代器指向順序容器的反向的開頭。

If the vector object is const-qualified, the function returns a const_reverse_iterator. Otherwise, it returns a reverse_iterator.

如果這個vector物件具有const屬性,那麼這個方法返回的iterator也將具有const屬性,否則,返回一個普通的reverse_iterator.


Member types reverse_iterator and const_reverse_iterator are reverse random access iterator types (pointing to an element and to a const element, respectively). See vector member types.

reverse_iterator的是一個反向的隨機訪問迭代器

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// vector::rbegin/rend
#include <iostream>
#include <vector>

int main ()
{
  std::vector<int> myvector (5);  // 5 default-constructed ints

  std::vector<int>::reverse_iterator rit = myvector.rbegin();

  int i=0;
  for (rit = myvector.rbegin(); rit!= myvector.rend(); ++rit)
    *rit = ++i;

  std::cout << "myvector contains:";
  for (std::vector<int>::iterator it = myvector.begin(); it != myvector.end(); ++it)
    std::cout << ' ' << *it;
  std::cout << '\n';

  return 0;
}


Output:
myvector contains: 5 4 3 2 1

Complexity

Constant.

Iterator validity

No changes.

該方法不會對其他迭代器的有效性造成影響。

Data races

The container is accessed (neither the const nor the non-const versions modify the container).

這個方法不會修改容器內的內容。

No contained elements are accessed by the call, but the iterator returned can be used to access or modify elements. Concurrently accessing or modifying different elements is safe.

該方法不會訪問容器李的元素,但是返回的這個iterator可以用來訪問以及修改元素,並且都是安全的。

Exception safety

No-throw guarantee: this member function never throws exceptions.

該方法不會丟擲異常。

The copy construction or assignment of the returned iterator is also guaranteed to never throw.

利用複製構造器或者是賦值運算子得到的該iterator也不會丟擲異常

//不足之處請多多指導,轉載請註明出處:點選開啟連結

2014-8-9

於GDUT