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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Ксю92
73 / 7 / 0
Регистрация: 29.03.2011
Сообщений: 94
#1

До выделение памяти в С++ - C++

09.06.2012, 17:41. Просмотров 414. Ответов 3
Метки нет (Все метки)

Всем приветик. Вообщем есть некоторые сложности с довыделение памяти...
Что я хочу сделать: есть 2-х мерный массив (он ещё и квадратный). Он считывается из файла.
Известно, что в массиве только нули и единички. Единичек произвольное количество. Мне надо получить координаты всех единичек. Надо через дин. массивы. Т.к. количество единичек в файле заранее не известно, то надо как то довыделять память, в процессе поиска. Как сделать довыделение памяти с помощью new - незнаю(((

т.е. есть массив, допустим такой:
0 0 0 0 1 0
0 1 0 1 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 1

тут координаты единичек [0, 4], [1, 1], [1, 3], [5, 5]
Как получить их мне в виде массива?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
тут всякий код
 
****
 
std::ifstream in(IN_DATA_FILE_NAME);
 
****
 
for(int i = 0; i < SIZE; i++, std::cout << std::endl) /** Записываем массив из файла */
  for(int j = 0; j < SIZE; j++)
  {
     in >> arr[i][j];
     std::cout << arr[i][j] << " ";
     if(arr[i][j] == 1) { /** тут надо довыделить память */ }
  }
 
****
 
тут пошёл дальше всякий код
Вроде можно это сделать с помощью STL (там есть штука vector), но как - не знаю...

Помогите плиз

Заранее спасибки!

Не по теме:

Если можно, но сделайте не через STL, а как нибудь по другому...



Добавлено через 3 минуты
И ещё небольшой вопросик: как в С++ называется такая штука :: (два двоеточия)
которая применяется, например так std::string hello_world;

Ещё раз спасибки!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2012, 17:41     До выделение памяти в С++
Посмотрите здесь:

Распределение памяти. Динамическое выделение памяти - C++
an-1 an-2 ... a2

Выделение памяти - C++
Нубский вопрос, но не могу до конца разобраться. Допустим, есть простое определение переменной: int ival = 1024; Когда и как...

Выделение памяти - C++
Доброго всем вечера. В книжке нашел задание: определить класс, представляющий стек. Сделал так, что при заполнении всего стека,...

выделение памяти - C++
Здравствуйте, помогите пожалуйста исправить ошибку, это лишь малая часть кода. В задании: поле name должно быть динамическим: char...

Выделение памяти - C++
Вот кусок кода, класс и функция добавления в список Класс занимает 64 бита, я добавляю 10 элементов в список - 640 бит Потом отнимаю...

Выделение памяти - C++
Можно ли сделать так, чтобы в memory выделилась память для 5 int объектов, а затем раздать ее разным переменным? Пытался таким образом и...

Выделение памяти(С = С++) - C++
Привет. Нужна помощь, в выделении памяти. Есть код на С, нужно перевести его в С++. int SaveFileOne(int i) { FILE *f; if ((f =...

Выделение памяти - C++
Скажите пожалуйста что не так? Не могу получить доступ к элементу str = 12, stlb = 3 bool** tempValues = new(bool*); for(int i = 0;...

Выделение памяти - C++
Здравствуйте! #include&lt;iostream&gt; int main() { int *mass = new int ; int *mass2 = new int ; std::cout &lt;&lt; (unsigned int)mass &lt;&lt;...

Выделение памяти - C++
Добрый вечер. Немогу никак понять некоторые тонкости выделения памяти. Во первых: на что указывает указатель, при записи char*...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soft.creator
103 / 103 / 4
Регистрация: 17.10.2010
Сообщений: 283
09.06.2012, 17:46     До выделение памяти в С++ #2
:: - это оператор разрешения области видимости (или разрешения области доступа)
Могу здесь ошибаться!

Что касается std::vector:
C++
1
2
3
4
5
6
std::vector<int> v; // так можно задать тип объекта внутри вектора
for (int i = 0; i < 100; i++)
   if (isGood(i))
      v.push_back(i); // так можно добавить элемент
for (size_t i = 0; i < v.size(); i++) // так узнать количество добавленных элементов
  std::cout << v[i] << std::endl; // а так обратиться к i-му элементу
А если без STL, я бы сделал односвязный список, а потом создал бы массив нужной длины и заполнил его из этого списка.

P.S. Ну или посчитать на первом проходе количество единичек, выделить память, а на втором проходе запомнить координаты. Но это самый плохой вариант.
Кот Ангенс
317 / 267 / 38
Регистрация: 24.05.2012
Сообщений: 629
09.06.2012, 17:56     До выделение памяти в С++ #3
В файле между цифрами есть пробелы?

Добавлено через 2 минуты
И еще: двумерный массив надо считывать из файла в память, или только посчитать единицы?

Добавлено через 5 минут
В общем, примерно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <fstream>
#include <iostream>
#include <vector>
 
using namespace std;
 
int main() {
    vector< pair<int, int> > v;
    char c;
    int x = 0, y = 0;
    ifstream in("input.txt");
    while (in.get(c))
        if (c == '1')
            v.push_back(pair<int, int>(x, y));
        else if (c == ' ')
            x++;
        else if (c == '\n') {
            x = 0;
            y++;
        }
    in.close();
    for (x = 0; x < v.size(); x++)
        cout << v[x].first << "; " << v[x].second << endl;
}
Ксю92
73 / 7 / 0
Регистрация: 29.03.2011
Сообщений: 94
09.06.2012, 18:11  [ТС]     До выделение памяти в С++ #4
soft.creator, спасибо, но это (с вектором) немного не то(( мне надо координаты единичек, а это 2 числа (i и j-тая координата) а у вас массив одномерный...

Кот Ангенс, сорри что я задание не очень точно сформултровала
в двух словах задание такое: есть двумерный массив, состоящий из 0 и 1. и мне надо получить координаты всех единичек, чтобы в дальнейшем я могла с ними работать)

P.S. Насчет файла забейте, т.к. не важно, как этот массив заполняется (ручками ли он вводится, или из файла читается, все равно))

Добавлено через 29 секунд
сейчас погуглила, что такое std::pair, похоже, это именно то, что мне нужно))

P.S.S. soft.creator, спасибо за объяснение точек
Yandex
Объявления
09.06.2012, 18:11     До выделение памяти в С++
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru