Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/48: Рейтинг темы: голосов - 48, средняя оценка - 4.73
2 / 2 / 0
Регистрация: 04.09.2009
Сообщений: 5
1

Как удалить строку/столбец из двумерного вектора?

04.09.2009, 17:26. Показов 9155. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Прошу помощи. До самого не доходит.
Имеем вектор v[N] [M].
C++
1
std::vector<std::vector<int> > v( N, std::vector<int>M);
Как с помощью функции .erase() библиотеки vector удалить строчку x, чтоб массив стал v[N-1] [M]?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.09.2009, 17:26
Ответы с готовыми решениями:

Как удалить нужную i-строку и j-столбец из двумерного массива?
Как удалить нужную i-строку и j-столбец из двумерного массива?

Из двумерного массива удалить строку и столбец на пересечении которых находится минимальный элемент
Из двумерного массива удалить строку и столбец на пересечении которых находится минимальный элемент

Как заполнить первую строку и первый столбец динамического двумерного массива единицами?
как заполнить первую строку и первый столбец динамического двумерного массива единицами с++ ? А...

Удалить k строку и n столбец из двумерного массива с использованием указателей
Нужно удалить k строку и n столбец из двумерного массива с использованием указателей. Перечитал...

6
эволюционирую потихоньку
 Аватар для TanT
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
04.09.2009, 21:24 2
Попробуй v.erase(v.begin()+x); Удалишь элемент номер х он же строка. Можешь таким образом удалить любую строку. Последняя соответсвенно v.erase(v.end()-1);
А вот со столбцами сложнее. придётся обращаться уже непосредственно к элементам и их удалять.
Пребирать нужно будет весь массив.
Может эксперты, что лучше подскажут.
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
04.09.2009, 23:10 3
Цикл по вектору, например итератор i. И просто на каждой итерации вызываем erase для нашего итератора. Все просто.
0
эволюционирую потихоньку
 Аватар для TanT
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
05.09.2009, 18:05 4
ну так и я о том
0
2 / 2 / 0
Регистрация: 04.09.2009
Сообщений: 5
05.09.2009, 18:18  [ТС] 5
Цитата Сообщение от TanT Посмотреть сообщение
Попробуй v.erase(v.begin()+x);
А можно в виде кода??
0
эволюционирую потихоньку
 Аватар для TanT
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
05.09.2009, 20:23 6
Чёт меня понесло. вот..
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <vector>
#include <iostream>
 
using namespace std;
 
typedef vector< vector<int> > Matrix;
typedef vector<int> Line;
 
void InitMatrix(Matrix&  m)
{
  int line=1;
  for (Matrix::iterator it_col=m.begin(); it_col!=m.end(); it_col++, line++)
    for (Line::iterator it_row=(*it_col).begin(); it_row!=(*it_col).end(); it_row++)
     *((*it_col).begin())=line;
}
 
void PrintMatrix(Matrix&  m)
{
  int line=1;
  for (Matrix::iterator it_col=m.begin(); it_col!=m.end(); it_col++, line++)
  {   cout<<"Line:"; cout.width(2);  cout<<line;
    for (Line::iterator it_row=(*it_col).begin(); it_row!=(*it_col).end(); it_row++)
    { cout.width(3);
      cout<<" "<<*((*it_col).begin());
    } 
    cout<<endl;
  }
}
 
 
void DeleteLine(Matrix& m, int numb)
{
  if (!m.empty())
  { int n=1;
    for (Matrix::iterator it_col=m.begin(); it_col!=m.end(); it_col++, n++)
    {
      if (n==numb)
      { m.erase(it_col); return;}
    } 
    cout<<"Not Line"<<endl;
  }// end  if (!m.empty())
  else
    cout<<"empty"<<endl;
}
 
void main()
{
  int M=10, N=10;
  Matrix v( N, Line (M, 1));
 
  cout<<"Init matrix "<<endl;
  InitMatrix(v);    // çàïîëíÿåò ìàòðèöó
  cout<<"Print matrix with initial values"<<endl;
  PrintMatrix(v);   // âûâîä íà ýêðàí
  
  cout<<endl; 
  cout<<"Delete first line in matrix "<<endl; 
  DeleteLine(v, 1); // óäàëÿåò, åñëè ìîæåò, óêàçàííóþ ëèíèþ
  cout<<"Print result:"<<endl;
  PrintMatrix(v);
  system("PAUSE");
} // end  main()
Добавлено через 20 минут
А вот со столбцами, пробуй эту
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include <vector>
#include <iostream>
 
using namespace std;
 
typedef vector< vector<int> > Matrix;
typedef vector<int> Line;
 
void InitMatrix(Matrix&  m)
{
  int line=0;
  for (Matrix::iterator it_col=m.begin(); it_col!=m.end(); it_col++, line++)
  { line+=100;
    for (Line::iterator it_row=(*it_col).begin(); it_row!=(*it_col).end(); it_row++)
     *(it_row)=line++;
  }
}
 
void PrintMatrix(Matrix&  m)
{
  int line=1;
  for (Matrix::iterator it_col=m.begin(); it_col!=m.end(); it_col++, line++)
  {   cout<<"Line:"; cout.width(2);  cout<<line;
    for (Line::iterator it_row=(*it_col).begin(); it_row!=(*it_col).end(); it_row++)
    { cout.width(3);
      cout<<" "<<*(it_row);
    } 
    cout<<endl;
  }
}
 
 
void DeleteColum(Matrix& m, int numb)
{
  if (!m.empty())
  { int n;
    for (Matrix::iterator it_col=m.begin(); it_col!=m.end(); it_col++)
    {
      n=1;
      for (Line::iterator it_row=(*it_col).begin(); it_row!=(*it_col).end(); it_row++,n++)
        if (n==numb)
        { (*it_col).erase(it_row); break;}
    } 
  }// end  if (!m.empty())
  else
    cout<<"empty"<<endl;
}
 
void DeleteLine(Matrix& m, int numb)
{
  if (!m.empty())
  { int n=1;
  for (Matrix::iterator it_col=m.begin(); it_col!=m.end(); it_col++, n++)
  {
    if (n==numb)
    { m.erase(it_col); return;}
  } 
  cout<<"Not Line"<<endl;
  }// end  if (!m.empty())
  else
    cout<<"empty"<<endl;
}
 
void main()
{
  int M=5, N=5;
  Matrix v( N, Line (M, 1));
 
  cout<<"Iniå matrix "<<endl;
  InitMatrix(v);    // çàïîëíÿåò ìàòðèöó
  cout<<"Print matrix with initial values"<<endl;
  PrintMatrix(v);   // âûâîä íà ýêðàí
  
  cout<<endl; 
  cout<<"Delete first line in matrix "<<endl; 
  DeleteLine(v, 1); // óäàëÿåò, åñëè ìîæåò, óêàçàííóþ ëèíèþ
  DeleteColum(v, 4);
  DeleteColum(v, 1);
  cout<<"Print result:"<<endl;
  PrintMatrix(v);
  system("PAUSE");
} // end  main()
2
2 / 2 / 0
Регистрация: 04.09.2009
Сообщений: 5
07.09.2009, 09:33  [ТС] 7
БОЛЬШОЕ СПАСИБО. Но я думал, что все проблемы можно решить одной строчкой (.
ВООБЩЕ, меня не устраивает, что в MSDN прописаны только работа с одномерками. Дали бы хоть синтаксис для многомерок. Не обязательно с примером.
Всё отлично работает. Меня смутили первые цифры, а это просто нумерация строк. Сейчас код немного подправлю для людей топорного (моего) уровня, и выложу.
0
07.09.2009, 09:33
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.09.2009, 09:33
Помогаю со студенческими работами здесь

Их двумерного массива удалить строку и столбец, на пересечении которых расположен минимальный элемен
Создайте двумерный массив целых чисел. Удалите из него строку и столбец, на пересечении которых...

Из двумерного массива удалить строку и столбец на пересечении которых находится минимальный элемент
Из двумерного массива удалить строку и столбец на пересечении которых находится минимальный...

Удалить из двумерного массива строку и столбец, на пересечении которых находится минимальный элемент
Сформировать двумерный массив .Удалить из него строку и столбец, на пересечении которых находится...

Как удалить "строку" или "столбец" из двумерного массива?
Не буду полностью разъяснять задачу. В общем есть двумерный массив: 1 2 0 2 0 0 1 0 1 0 2 2 2...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Как проверить, что файл НЕ существует с помощью Bash
bytestream 25.01.2025
В системном администрировании проверка существования файлов является фундаментальной операцией, особенно при написании скриптов на Bash. Правильная обработка ситуаций, когда файл отсутствует,. . .
Как проверить, что строка пустая, неопределена или null в JavaScript
bytestream 25.01.2025
При разработке веб-приложений на JavaScript разработчики регулярно сталкиваются с необходимостью проверки строковых значений на различные состояния. Валидация данных является критически важным. . .
Как проверить существование ключа в объекте или массиве в JavaScript
bytestream 25.01.2025
При разработке веб-приложений на JavaScript программисты постоянно сталкиваются с необходимостью работать с объектами и массивами. Эти структуры данных являются фундаментальными элементами языка и. . .
Как создать ArrayList из массива (array) в Java
bytestream 25.01.2025
При разработке программного обеспечения на языке Java программисты часто сталкиваются с необходимостью эффективного управления наборами данных. Массивы и ArrayList являются двумя фундаментальными. . .
Как сгенерировать случайные целые числа (int) в указанном диапазоне в Java
bytestream 25.01.2025
В программировании генерация случайных чисел является важнейшим инструментом для решения множества практических задач. От создания игровых механик до реализации алгоритмов машинного обучения, от. . .
Как сделать, чтобы grep выводил строки до и после найденной
hw_wired 25.01.2025
Утилита grep стала незаменимым инструментом для поиска и фильтрации информации в Unix-подобных операционных системах. Эта командная утилита позволяет осуществлять поиск строк, соответствующих. . .
Как клонировать определенную ветку в Git
bytestream 24.01.2025
Одной из ключевых функций Git является возможность клонирования веток, что позволяет создавать локальные копии удаленных репозиториев и работать с определенными версиями проекта. Этот механизм. . .
Как в цикле обойти строки DataFrame в Pandas Python
bytestream 24.01.2025
DataFrame представляет собой одну из основных структур данных в библиотеке Python Pandas, которая организует информацию в виде двумерной таблицы с строками и столбцами. Эта структура данных особенно. . .
Как получить имя текущей ветки в Git
bytestream 24.01.2025
При работе с Git часто возникает необходимость определить имя текущей ветки, в которой ведется разработка. Знание текущей ветки является критически важным аспектом для эффективного управления. . .
Как отсортировать массив объектов по значению поля объекта в JavaScript
bytestream 24.01.2025
При разработке веб-приложений на JavaScript разработчики часто сталкиваются с необходимостью работать с массивами объектов. Эти структуры данных представляют собой упорядоченные наборы элементов, где. . .
Ошибка "src refspec master does not match any" при пуше коммита в Git
bytestream 24.01.2025
При работе с системой контроля версий Git разработчики нередко сталкиваются с различными ошибками, одной из которых является сообщение "src refspec master does not match any". Эта ошибка возникает. . .
Как округлить не более двух цифр после запятой в JavaScript
bytestream 24.01.2025
При работе с числами в JavaScript разработчики часто сталкиваются с необходимостью округления десятичных значений до определенного количества знаков после запятой. Это особенно важно при работе с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru