Форум программистов, компьютерный форум CyberForum.ru

Как считать вектор из файла? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.63
Noname2512
4 / 4 / 1
Регистрация: 25.06.2010
Сообщений: 106
05.08.2011, 19:39     Как считать вектор из файла? #1
как считать вектор из файла?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Сыроежка
Заблокирован
05.08.2011, 19:41     Как считать вектор из файла? #2
Цитата Сообщение от Noname2512 Посмотреть сообщение
как считать вектор из файла?

На мой взгляд самый простой способ - это с помощью стандартного алгоритма std::copy, где задаются входные итераторы для файла, а выходный итератор - этот итератор вставки для вектора
Noname2512
4 / 4 / 1
Регистрация: 25.06.2010
Сообщений: 106
05.08.2011, 19:44  [ТС]     Как считать вектор из файла? #3
а если мне следует брать не все элементы файла, а токо те которые соответствуют
определенным параметрам ? если не сложно с примером
Сыроежка
Заблокирован
05.08.2011, 19:50     Как считать вектор из файла? #4
Цитата Сообщение от Noname2512 Посмотреть сообщение
а если мне следует брать не все элементы файла, а токо те которые соответствуют
определенным параметрам ? если не сложно с примером
Тогда можно написать свой алгоритм copy_if с предикатом, в котором будет задано условие.

copy( std::istream_iterator<int>( SomeStream ), std::istream_iterator<int>(),
std::back_inserter( v ), predicate );

То есть я лично бы так написал. А вам скорей всего нужно открыть входной поток

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include  <fstream>
 
int main()
{
   std::ifstream in( "FileName" );
 
   if ( !in )
   {
      std::cout << "Error!\n";
      exit( EXIT_FAILURE );
   }
 
   while ( !in )
   {
   /// здесь читаете файл и записываете данные в вектор с помощью v.push_back( value )
   }
 
   in.close();
 
   return ( EXIT_SYCCESS );
}
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
05.08.2011, 20:13     Как считать вектор из файла? #5
C++
1
EXIT_SUCCESS
Добавлено через 5 минут
C++
1
while ( !in )
тогда ничего не запишется
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
05.08.2011, 20:13     Как считать вектор из файла? #6
Цитата Сообщение от Noname2512 Посмотреть сообщение
как считать вектор из файла?
Чтобы считать вектор из файла, надо его туда сначала записать. Как только разберетесь, как записать вектор в файл, вопрос про чтение отпадет сам собой...
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
05.08.2011, 20:55     Как считать вектор из файла? #7
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <fstream>
#include <vector>
#include <iterator>
int main(){
    std::ifstream input("input.txt");
    std::vector<int> vec;
    std::copy(std::istream_iterator<int> (input), std::istream_iterator<int>(), std::back_inserter(vec) );
    std::copy(vec.begin(), vec.end(), std::ostream_iterator<int> (std::cout, " ") );
}
Чтобы считать вектор из файла, надо его туда сначала записать.
А руками вбить - не вариант?)
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
05.08.2011, 21:00     Как считать вектор из файла? #8
Цитата Сообщение от diagon Посмотреть сообщение
[CPP]#include <iostream>

А руками вбить - не вариант?)
Руками вбить - это НЕ вектор - это набор чисел.
Набор чисел может быть устроен КАК угодно. Мы его просто читаем стандартными средствами и помещаем в вектор. Это не то же самое, что "читать вектор".
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
05.08.2011, 21:01     Как считать вектор из файла? #9
а как при помощи
C++
1
std::copy
считать матрицу из файла в
C++
1
std::vector<std::vector<int> >
?
Noname2512
4 / 4 / 1
Регистрация: 25.06.2010
Сообщений: 106
06.08.2011, 17:46  [ТС]     Как считать вектор из файла? #10
народ почему при компиляции ошибок нет, а когда выполняю выскакивает окно :
Debug assertion failed!
вот на этой строке
C++
1
matrix[i][j] = n; // vector< vector<int> >  matrix;
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
06.08.2011, 19:09     Как считать вектор из файла? #11
Цитата Сообщение от Noname2512 Посмотреть сообщение
народ почему при компиляции ошибок нет, а когда
ты так создал матрицу?
C++
1
2
const int G = 8;
vector<vector<int> > m(G, vector<int>(G));
Noname2512
4 / 4 / 1
Регистрация: 25.06.2010
Сообщений: 106
06.08.2011, 19:22  [ТС]     Как считать вектор из файла? #12
нет, я написал токо : vector< vector<int> > matrix;
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
06.08.2011, 19:22     Как считать вектор из файла? #13
Цитата Сообщение от Noname2512 Посмотреть сообщение
нет, я написал токо : vector< vector<int> > matrix;
исправь
Noname2512
4 / 4 / 1
Регистрация: 25.06.2010
Сообщений: 106
06.08.2011, 19:34  [ТС]     Как считать вектор из файла? #14
а что означает выражение в круглых скобках ?
Сыроежка
Заблокирован
06.08.2011, 20:37     Как считать вектор из файла? #15
Цитата Сообщение от Noname2512 Посмотреть сообщение
а что означает выражение в круглых скобках ?
Если я правильно понял ваш вопрос, то в круглах скобках задано начальное количество элементов вектора, которое выражено в виде const int G = 8;
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
06.08.2011, 20:56     Как считать вектор из файла? #16
Цитата Сообщение от Сыроежка Посмотреть сообщение
Если я правильно понял ваш вопрос, то в круглах скобках задано начальное количество элементов вектора, которое выражено в виде const int G = 8;
B каждый из этих 8-ми элементов вектора инициализируется вектором же...
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
06.08.2011, 21:57     Как считать вектор из файла? #17
Цитата Сообщение от Noname2512 Посмотреть сообщение
а что означает выражение в круглых скобках ?
вызываются конструкторы, выделяется память

можно и подругому заполнить:
C++
1
2
3
4
5
6
7
8
9
10
11
    vector<vector<int> > m(G);
 
    vector<int> t(G);
    m[0] = t;
    m[1] = t;
    m[2] = t;
    m[3] = t;
    m[4] = t;
    m[5] = t;
    m[6] = t;
    m[7] = t;
Noname2512
4 / 4 / 1
Регистрация: 25.06.2010
Сообщений: 106
07.08.2011, 08:21  [ТС]     Как считать вектор из файла? #18
у меня частенько ошибку вызывает когда я выхожу за пределы g
как быть если я не знаю сколько элементов будет в матрице ?(я знаю скоко столбов)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.08.2011, 15:16     Как считать вектор из файла?
Еще ссылки по теме:

C++ Считать слова строк из файла в вектор векторов
Как считать с файла C++
C++ Как считать файлы в вектор, который содержится в объекте пользовательского класса?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
07.08.2011, 15:16     Как считать вектор из файла? #19
1) посчитать
2) в 1ой строке файла держать размер массива
3) юзать любой динамически расширяемый массив (e.g. вектор)
Yandex
Объявления
07.08.2011, 15:16     Как считать вектор из файла?
Ответ Создать тему
Опции темы

Текущее время: 16:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru