gpt4 book ai didi

c++如何使用两个迭代器从 vector 复制范围

转载 作者:太空宇宙 更新时间:2023-11-04 15:53:10 24 4
gpt4 key购买 nike

我有这个无法编译的示例代码:

#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;
}
}

我想要的是将 vector vi 的递增部分(这将需要数百万个元素)传递给一个函数(未显示)。这些段从 vi 的开始一直到 actual 当前所在的位置。
为此,我声明了本应包含在 vi 中的 seg

期望的输出是:

3
3 4
3 4 5
3 4 5 63 4 5 6 7

难道 seg 不应该保存由迭代器 ci_startci_actual 表示的 vi 元素的拷贝吗?

要将 vi 的不断增加的部分传递给我引用的函数(不存在),我可以更快地完成它而不将 vi 的元素复制到另一个 vector 并且只是传递对 vi 段的引用?

最佳答案

for (const vector<int>::const_iterator ci = vi.begin(); ci != vi.end(); ++ci)

您在这里声明了一个 const const_interator。意思是当你尝试调用++ci 时,编译器会因为你试图修改常量变量而对你大喊大叫。这应该可以修复该编译器错误:

for (vector<int>::const_iterator ci = vi.begin(); ci != vi.end(); ++ci)

关于c++如何使用两个迭代器从 vector 复制范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4564267/

24 4 0
文章推荐: html - 流体高度取决于 Drupal 主题中的内容
文章推荐: html - 图片高于
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com