gpt4 book ai didi

c++ - back_inserter(容器)的类型是什么

转载 作者:搜寻专家 更新时间:2023-10-31 00:45:14 25 4
gpt4 key购买 nike

我的以下代码可以编译,但我不知道如何在不使用 decltype 的情况下编写它。我在使用 decltype 的行下方的注释行中写下了失败的尝试。

#include <iostream>
#include <iterator>
#include <vector>

using namespace std;

template<class Out>
class Fill{
public:
Fill(){}
void fill(Out x){
for(int i = 0; i != 10; i++)*x++ = i;
}
};

int main(){
vector<int> v;

Fill<decltype(back_inserter(v))> f; //works

//does not work
//Fill<vector<int>::iterator> g;

//does not work
//Fill<back_insert_iterator<vector<int>> h;


f.fill(back_inserter(v));
copy(v.begin(),v.end(),ostream_iterator<int>(cout," "));
}

谢谢

确定

最佳答案

类型将为 back_insert_iterater<vector<int> > .你的第三个例子不起作用,因为你需要在“>>”之间有一个空格。参见 http://www.cplusplus.com/reference/std/iterator/back_insert_iterator/ ,它只是持有一个指向容器类型的指针,并将 operator= 重新定义为 container.push_back。我相信这是存在的,因此标准容器可以使用标准算法。但是,由于您已经控制了 Fill 的定义,您可以简单地允许 Fill 类保存容器指针并直接针对容器调用 push_back。

关于c++ - back_inserter(容器)的类型是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7169848/

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