OutputIteratorをとり、値を書き込むC++関数を記述しようとしていますが、さまざまな問題が発生しています。リスト<>イテレータを渡すと、リストは埋められません。ベクトル<>イテレータを渡すと、(Linux上で)セグメント化エラーが発生します。OutputIteratorをとり、それに書き込むC++関数
私は"populating an std::[container] from a function by passing an output iterator"と"How to write a function that takes an iterator or collection in a generic way?"からの議論に続きました。
アイデア?私は他のSTL関数std:copy()と同じように、出力コンテナのbegin()でinsertValues()コードを呼び出したいと思います。
#include <cstdio>
#include <list>
#include <vector>
using namespace std;
template<typename OutputIterator>
void insertValues(OutputIterator result)
{
for (int i = 0; i < 10; i++)
{
*(result++) = i;
}
}
int main(int argc, char **argv)
{
// This code produces 0 items in the list.
list<int> values_list;
insertValues(values_list.begin());
printf("values has %d items\n", (int) values_list.size());
// This code produces a seg fault.
vector<int> values_vector;
insertValues(values_vector.begin());
printf("values has %d items\n", (int) values_vector.size());
}
あなたは質問しますが、回答は受け付けません。 "tick"記号をクリックすると、最も満足度の高い回答を受け入れることができます。 – Nawaz