Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вопрос из stl, vector<string> ... 
:(
    Опции темы
YonasBriginas
Дата 27.3.2006, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 25.2.2006

Репутация: нет
Всего: нет



всем доброго времени суток.
есть тестовая программа
Код

#include <fstream>
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>

using namespace std;

int main()
{
    ifstream ifile("in");
    istream_iterator<string> ii(ifile);
    istream_iterator<string> eos;
    vector<string> vv (ii, eos);
    cout << count(vv.begin(), vv.end(), "str") << endl;
    ifile.close();
    return 0;
}


компилятор ругается на vector<string> vv (ii, eos);

: error C2664: '__thiscall std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_t
raits<char>,class std::allocator<char> > > >::std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<ch
ar> > > >(unsigned int,const class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,const class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > &)' : cannot
convert parameter 1 from 'class std::istream_iterator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,char,struct std::char_traits<char> >' to 'unsigned int'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

объясните, пожалуйста, в чём моё недопонимание.
PM MAIL   Вверх
Void
Дата 27.3.2006, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



Шайтан его знает, VC 7.1 и 8.0 прекрасно компилируют.
Такое впечатление, будто компилятор не видит соответствующей сигнатуры конструктора вектора. Попробуй так:
Код

vector<string> vv;
vv.assign(ii, eos);



--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
YonasBriginas
Дата 27.3.2006, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 25.2.2006

Репутация: нет
Всего: нет



to Void:

и так тоже не хочет.

у меня ещё одни вопрос созрел:
вектор состоит из объёктов класса string. можно ли ограничить размер этих объектов?
поясню, что хотел сказать:
у нас есть большой файл, открыли его как бинарный, если я буду из файлового потока заполнять вектор из элементов класса string, то он захочет затолкать весь файл в один оъект вектора.

что делать в этом случае?
PM MAIL   Вверх
Earnest
Дата 28.3.2006, 07:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Цитата(YonasBriginas @ 27.3.2006, 21:07 Найти цитируемый пост)
и так тоже не хочет.

В некоторых версиях STL нет темплэйтных функций для любых итераторов. Может, это твой случай. Попробуй так:
Код

std::copy(ii,eos,std::back_insertor(vv));

По производительности это, конечно, хуже, но что поделать...

Цитата(YonasBriginas @ 27.3.2006, 21:07 Найти цитируемый пост)
у нас есть большой файл, открыли его как бинарный, если я буду из файлового потока заполнять вектор из элементов класса string, то он захочет затолкать весь файл в один оъект вектора.

А что в большом файле? Только строки, разделенные чем? Я бы не стала особо извращаться, а просто ручками написала цикл... Но можно попробовать поток доработать...



--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0624 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.