gpt4 book ai didi

c++ - vector 的 back_inserter 错误

转载 作者:行者123 更新时间:2023-11-28 01:40:16 26 4
gpt4 key购买 nike

我正在通过以下链接阅读 STL 教程

http://cs.brown.edu/people/jak/proglang/cpp/stltut/tut.html

如何修复编译错误?

这里提到了下面的代码

#include <algorithm>
#include <vector>
#include <stdlib.h>
#include <iostream>
#include <iterator>

using namespace std;

template <class ForwardIterator, class T>
void iota_n (ForwardIterator first, int n, T value)
{
for (int i = 0; i < n; i++) {
*first++ = *value++;
}
}


void main ()
{

vector<int> v;
iota_n (v.begin(), 100, back_inserter(v));

random_shuffle (v.begin(), v.end()); // shuffle
copy (v.begin(), v.end(), ostream_iterator<int> (cout, "\n")); // print

}

编译时遇到如下错误。

错误 C2440:“=”:无法从“std::back_insert_iterator<_Container>”转换为“int”

最佳答案

void iota_n (ForwardIterator first, int n, T value)

此原型(prototype)需要迭代器作为第一个参数,但您将它作为初始值传递。

当您将 iota_n 调用替换为

iota_n (back_inserter(v), 100, 42);

并修正函数内的赋值:

*first++ = value++;

你会得到你想要的结果。

关于c++ - vector 的 back_inserter 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47436201/

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