【发布时间】:2020-04-14 17:53:03
【问题描述】:
我有一个 std::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;
}
我宁愿不必将元素复制到新的数据结构中。
【问题讨论】:
-
为什么是这个社区维基?
-
当您需要一个范围和一个不等于 1 的步幅时,通常将其称为“切片”。例如参见 std::gslice 和 std::valarray。步幅为 1 通常称为“范围”。