相关疑难解决方法(0)

为什么使用rbegin()而不是end() - 1?

我想知道使用rbegin()而不是end() - 1对STL容器有什么好处.

例如,为什么你会使用类似的东西:

vector<int> v;
v.push_back(999);
vector<int>::reverse_iterator r = v.rbegin();
vector<int>::iterator i = r.base();
Run Code Online (Sandbox Code Playgroud)

而不是:

vector<int> v;
v.push_back(999);
auto r = v.end() - 1;
Run Code Online (Sandbox Code Playgroud)

c++ iterator stl vector reverse-iterator

10
推荐指数
2
解决办法
8243
查看次数

什么"一个过去的最后元素"在向量中意味着什么?

我正在学习向量,并对数组如何在这里复制到向量感到困惑

double p[] = {1, 2, 3, 4, 5};
std::vector<double> a(p, p+5);
Run Code Online (Sandbox Code Playgroud)

我也知道std::vector<double> a(3,5);`为3腾出空间并用5初始化它们.上面的代码如何工作?

第二点是我从我复制上述代码的地方读到的段落.

在使用矢量或任何其他标准容器时,理解第二点至关重要.受控序列始终以[first,one-last-last]表示 - 不仅适用于ctors,还适用于对一系列元素进行操作的每个函数.

我不知道是什么意思[first, one-past-last)?我在数学上知道,但不知道为什么/如何以这种方式复制数组?

编辑

另一个相关问题

成员函数end()返回一个迭代器,该迭代器one-past-the-last-element在序列中"指向" .请注意,取消引用返回的迭代器end()是非法的,并且具有未定义的结果.

你能解释one-past-the-last-element一下它是什么吗?为什么?

c++ vector

6
推荐指数
2
解决办法
2162
查看次数

标签 统计

c++ ×2

vector ×2

iterator ×1

reverse-iterator ×1

stl ×1