C++ 为算法指定输入和输出范围

C++ 为算法指定输入和输出范围,c++,c++11,C++,C++11,在标准库中有许多用例,我也遇到了自己的代码,在这些情况下,我希望将大小必须相同的输入和输出范围传递给某些算法。目前,这需要三个或四个迭代器(如果您想小心的话)。通常会进行一系列检查,以确保迭代器有意义 我知道,在某些情况下,array_视图可能合并being/end迭代器对,但这仍然需要检查输入和输出array_视图的大小是否不同。是否讨论过同时包含输入和输出范围规范的类?也许范围方案解决了部分或全部问题,但我不清楚它是如何解决的。我经常有类似的用例。我发现最通用的方法是传递对输出“容器”概念的

在标准库中有许多用例,我也遇到了自己的代码,在这些情况下,我希望将大小必须相同的输入和输出范围传递给某些算法。目前,这需要三个或四个迭代器(如果您想小心的话)。通常会进行一系列检查,以确保迭代器有意义


我知道,在某些情况下,array_视图可能合并being/end迭代器对,但这仍然需要检查输入和输出array_视图的大小是否不同。是否讨论过同时包含输入和输出范围规范的类?也许范围方案解决了部分或全部问题,但我不清楚它是如何解决的。

我经常有类似的用例。我发现最通用的方法是传递对输出“容器”概念的引用,而不是一个范围或一对迭代器。然后,算法可以根据需要自由调整容器大小或扩展容器,缓冲区溢出的可能性消失

例如(一个简单的人为的)例子:

template<class InputIter, class OutputContainer>
void encrypt_to(OutputContainer& dest, InputIter first, InputIter last)
{
  dest.resize(last - first);
  // ... todo: replace this with some actual encryption
  std::copy(first, last, dest.begin());
}

我经常有一个类似的用例。我发现最通用的方法是传递对输出“容器”概念的引用,而不是一个范围或一对迭代器。然后,算法可以根据需要自由调整容器大小或扩展容器,缓冲区溢出的可能性消失

例如(一个简单的人为的)例子:

template<class InputIter, class OutputContainer>
void encrypt_to(OutputContainer& dest, InputIter first, InputIter last)
{
  dest.resize(last - first);
  // ... todo: replace this with some actual encryption
  std::copy(first, last, dest.begin());
}

你能提供一个简单的用例示例吗?你能提供一个简单的用例示例吗?