У меня есть пример кода, который не компилируется:
#include <iostream>
#include <vector>
using std::endl; using std::cin; using std::cout;
using std::vector;
int main()
{
vector<int> vi, seg;
vi.push_back(3);
vi.push_back(4);
vi.push_back(5);
vi.push_back(6);
vi.push_back(7);
vector<int>::const_iterator ci_start = vi.begin();
vector<int>::const_iterator ci_actual = vi.begin();
while (ci_actual != vi.end())
{
seg = vi(ci_start, ci_actual);
cout << "......" ;
for (const vector<int>::const_iterator ci = vi.begin();
ci != vi.end(); ++ci)
cout << *ci << " ";
cout << endl;
++ci_actual;
}
}
Я хочу передать возрастающую часть вектора vi
(которая займет несколько миллионов элементов) в функцию (не показана). Эти сегменты рассматриваются с начала vi
до того момента, когда actual
находится в данный момент.
Для этого я объявил seg
, который должен был иметь часть vi.
Желаемый результат будет:
3
3 4
3 4 5
3 4 5 6
3 4 5 6 7
Разве seg
не должен содержать копию элементов vi
, обозначенных итераторами ci_start
и ci_actual
?
Чтобы передать постоянно увеличивающуюся часть vi
функции, на которую я ссылался (отсутствует), можно ли сделать это быстрее, не копируя элементы vi
в другой вектор, и просто передать ссылку на сегмент vi