38 lines
821 B
C++
38 lines
821 B
C++
|
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
|
||
|
|
||
|
#if !defined(CPPLINQ_LINQ_SKIP_HPP)
|
||
|
#define CPPLINQ_LINQ_SKIP_HPP
|
||
|
#pragma once
|
||
|
|
||
|
#include <cstddef>
|
||
|
|
||
|
namespace cpplinq
|
||
|
{
|
||
|
template <class Collection>
|
||
|
struct linq_skip
|
||
|
{
|
||
|
public:
|
||
|
typedef typename Collection::cursor cursor;
|
||
|
|
||
|
linq_skip(const Collection& c, std::size_t n) : c(c), n(n) {}
|
||
|
|
||
|
cursor get_cursor() const {
|
||
|
std::size_t rem = n;
|
||
|
|
||
|
auto cur = c.get_cursor();
|
||
|
while(rem-- && !cur.empty()) {
|
||
|
cur.inc();
|
||
|
}
|
||
|
cur.forget();
|
||
|
return cur;
|
||
|
}
|
||
|
|
||
|
private:
|
||
|
Collection c;
|
||
|
std::size_t n;
|
||
|
};
|
||
|
}
|
||
|
#endif // !defined(CPPLINQ_LINQ_SKIP_HPP)
|
||
|
|
||
|
|