【发布时间】:2010-12-30 16:21:01
【问题描述】:
我有这个无法编译的示例代码:
#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 目前所在的位置。
为此,我声明了应该是 vi 的一部分的 seg。
期望的输出是:
3
3 4
3 4 5
3 4 5 6
3 4 5 6 7
seg 是否不应该包含由迭代器 ci_start 和 ci_actual 表示的 vi 元素的副本?
要将vi 的不断增加的部分传递给我引用的函数(不存在),我可以在不将vi 的元素复制到另一个向量的情况下更快地完成它,而只需传递对vi 段的引用?
【问题讨论】: