gpt4 book ai didi

c++ - 切片 vector

转载 作者:IT老高 更新时间:2023-10-28 12:43:07 37 4
gpt4 key购买 nike

我有一个 std::vector。我想创建代表该 vector 切片的迭代器。我该怎么做?在伪 C++ 中:

class InterestingType;

void doSomething(slice& s) {
for (slice::iterator i = s.begin(); i != s.end(); ++i) {
std::cout << *i << endl;
}
}
int main() {
std::vector v();
for (int i= 0; i < 10; ++i) { v.push_back(i); }
slice slice1 = slice(v, 1, 5);
slice slice2 = slice(v, 2, 4);
doSomething(slice1);
doSomething(slice2);
return 0;
}

我宁愿不必将元素复制到新的数据结构中。

最佳答案

您只需使用一对迭代器:

typedef std::vector<int>::iterator vec_iter;

void doSomething(vec_iter first, vec_iter last) {
for (vec_iter cur = first; cur != last; ++cur) {
std::cout << *cur << endl;
}
}

int main() {
std::vector v();
for (int i= 0; i < 10; ++i) { v.push_back(i); }

doSomething(v.begin() + 1, v.begin() + 5);
doSomething(v.begin() + 2, v.begin() + 4);
return 0;
}

另外,Boost.Range 库应该允许您将迭代器对表示为单个对象,但以上是执行此操作的规范方法。

关于c++ - 切片 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1110523/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com