gpt4 book ai didi

c++ - 使用标准库切片

转载 作者:可可西里 更新时间:2023-11-01 18:00:02 27 4
gpt4 key购买 nike

标准库中是否有允许我切片 std::slice 的功能,或者我是否需要编写类似的东西

std::slice refine(std::slice const& first, std::slice const& second)
{
return {
first.start() + second.start() * first.stride(),
second.size(),
first.stride() * second.stride()
};
}

我自己?

最佳答案

据我所知,标准库中没有这样的东西。

http://en.cppreference.com/w/cpp/numeric/valarray/slice

http://en.cppreference.com/w/cpp/numeric/valarray/slice_array

但是如果你使用的是 const std::valarray 你可以使用操作符

valarray<T> operator[] (slice slc) const;

这将返回另一个 std::valarray,并且您可以再次应用 std::slice。

// slice example
#include <iostream> // std::cout
#include <cstddef> // std::size_t
#include <valarray> // std::valarray, std::slice

int main() {
std::valarray<int> foo(100);
for (int i = 0; i < 100; ++i) foo[i] = i;

std::valarray<int> bar = foo[std::slice(2, 20, 4)];

std::cout << "slice(2,20,4):";
for (auto b : bar) std::cout << ' ' << b;
std::cout << '\n';

auto const cfoo = foo;
std::valarray<int> baz = cfoo[std::slice(2, 20, 4)][std::slice(3, 3, 3)];

std::cout << "slice(3,3,3):";
for (auto b : baz) std::cout << ' ' << b;
std::cout << '\n';
return 0;
}

关于c++ - 使用标准库切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36609488/

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