Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 无法写入zip范围?_C++_C++14_Range V3 - Fatal编程技术网

C++ 无法写入zip范围?

C++ 无法写入zip范围?,c++,c++14,range-v3,C++,C++14,Range V3,以下是失败的: #include <range/v3/view.hpp> #include <range/v3/view/zip.hpp> #include <range/v3/utility/iterator.hpp> // ... std::vector< std::tuple<int, std::string> > const data{ {1,"a"}, {2,"b"}, {3,"c"} }; std::v

以下是失败的:

#include <range/v3/view.hpp>
#include <range/v3/view/zip.hpp>
#include <range/v3/utility/iterator.hpp>

// ...

std::vector< std::tuple<int, std::string> > const data{
   {1,"a"},
   {2,"b"},
   {3,"c"}
};
std::vector<int> vi(data.size());
std::vector<std::string> vs(data.size());

using namespace ranges;
copy(data,  view::zip(vi,vs) ); // error
#包括
#包括
#包括
// ...
std::vectorconst数据{
{1,“a”},
{2,“b”},
{3,“c”}
};
std::vector vi(data.size());
std::vector vs(data.size());
使用名称空间范围;
复制(数据,视图::zip(vi,vs));//错误
叮当声说

No matching function for call to object of type 'const 
ranges::v3::with_braced_init_args<ranges::v3::copy_fn>'
对“const”类型对象的调用没有匹配函数
范围::v3::带括号的参数
假设这是设计的,为什么

那么,我怎样才能对范围做这个显而易见的事情呢

  • copy
    采用输出迭代器,而不是输出范围。因此,您需要在zip视图上调用
    begin
    ,并将其转换为迭代器
  • 解决了这个问题后,您会遇到另一个问题
    zip
    ping两个范围生成一个
    (好吧,一个
    公共对
    ),但是,虽然两个元素的元组可以从对中分配,但不能从两个元素的元组中分配对。因此,我们无法执行与
    *zip_iterator=*data.begin()
    等效的操作,并且概念检查失败。如果将
    数据
    设为
    s的向量,则它将起作用

  • 这是不相关的(有人引用,然后删除了评论)。后退插入器这里是范围::后退插入器。事实上,问题并不是这样。我更新了相关代码以消除歧义。背面插入的压缩范围错误与此相同。当然,使用它们会更方便。我不认为它与
    zip
    有关。所有视图都必须输入范围。我明白了。。那就行动吧?但没有看到它如何与拉链组合。好。。困惑现在。(2)可以说是一个错误。类似元组的东西应该是可以相互分配的。好吧,是的,我正要指出这一点,这个Eric的家伙插嘴了:)谢谢,我真傻,竟然使用了一个预期输出iter的范围。然而,平心而论,编译器错误并没有那么有用。具有讽刺意味的是,基于概念的故事大纲似乎没有以前的错误小说所具有的令人满意的妙语:(sfinae是所有这些的正确工具吗?同时也不清楚我如何能回到一个压缩范围内插入。)嗯,让我为这编出另一个问题,在这里问back_inserter问题: