Я пытаюсь инициализировать вектор с помощью итераторов, и я получаю сообщение об ошибке компилятора, которое в основном говорит о том, что нет соответствующей функции для вызова.
Код считывается из файла с помощью istream_iterator и заканчивается входным стражем. Затем я пытаюсь инициализировать вектор этими двумя итераторами.
#include "std_lib_facilities.h"
#include<iterator>
int main()
{
string from, to; // get source and target file names
cin >> from >> to;
ifstream is(from.c_str()); // open input stream
ofstream os(to.c_str()); // open output stream
istream_iterator<string> ii(is); // make input iterator for stream
istream_iterator<string> eos; // input sentinel
ostream_iterator<string> oo(os,"\n");
vector<string> words(ii, eos); // vector initialized from input
sort(words.begin(), words.end()); // sort the buffer
copy(words.begin(), words.end(), oo); // copy buffer to output
}
Я знаю, что мог бы использовать функцию копирования для копирования входного потока в вектор, но я прочитал, что это можно сделать и таким образом. Может кто-нибудь объяснить, почему это не компилируется? Спасибо.
Ошибка компилятора:
C:\Users\Alex\C++\stream_iterators.cpp|16|error: no matching function for call to `Vector<String>::Vector(std::istream_iterator<String, char, std::char_traits<char>, ptrdiff_t>&, std::istream_iterator<String, char, std::char_traits<char>, ptrdiff_t>&)'|
Редактировать: Это не проблема заголовка. Std_lib_facilities имеет все необходимые заголовки.