Как обнулить двумерный массив c
Перейти к содержимому

Как обнулить двумерный массив c

  • автор:

Обнуление массива

Обнуление элементов массива, расположенных между экстремальными элементами (найти ошибку)
Помогите найти обшибку, пожалуйста, иногда верно выдает, иногда с частично зануляет, а иногда.

Обнуление последнего чередующегося ряда
Всем привет,нужна помощь.Пытаюсь обнулить последний знакочередующийся ряд,но не получается.В чем.

Обнуление потока вывода из файла
Есть файл с данными типа : 11 22 5 s 6 7 И такой кусочек кода: FILE *f = fopen(name, "r"); if.

Обнуление переменных (неправильная работа приложения)
Добрый день, подскажите, почему такое может получаться (компилятор VS2013 pro). Данное приложение.

Обнулить двумерный массив в C ++. Мне нужно 2 для петель?

Как я могу нуль 2D-массив в C++? Нужно ли мне два цикла для этого? Исходя из других высших языков, мне интересно, почему C++ не инициализирует массивы значимыми/разумными значениями по умолчанию? Должен ли я всегда объявлять массив, а затем «нулевым» его потом?

Jiew Meng 17 нояб. 2012, в 05:31
Поделиться

Нет, вам не всегда нужно обнулять его сразу после. Вот почему они не обнуляются для вас; это бесполезная трата времени, когда тебе это не нужно.

chris 17 нояб. 2012, в 03:42
Поделиться:

4 ответа

Лучший ответ

Язык C++ пытается следовать принципу «вы не платите за то, что не используете». Он не инициализирует фундаментальные типы для любых значений по умолчанию, потому что вы, возможно, не хотите, чтобы это произошло. В любом случае, язык предоставляет вам возможность явно запросить такую инициализацию.

На момент объявления вы можете использовать инициализаторы и просто сделать это

int array[10][20] = <>; 

или, для динамически распределенного массива

int (*array)[20] = new int[10][20](); 

и это даст нулевой инициализированный массив. Нет необходимости в петлях.

Но если вы хотите обнулить существующий массив, вам действительно нужно будет использовать что-то более сложное. В случае целых типов будет работать старый добрый memset . Для типов указателей или с плавающей точкой ситуация в общем случае сложнее. memset может работать или может не работать, в зависимости от свойств, определенных при реализации. В любом случае стандартная библиотека может помочь вам сократить количество явных циклов, предоставив такие обертки цикла как std::fill .

как коректно создать двумерный динамический массив строк и очистить память в с++

выдает ошибку. В чем моя ошибка? Как ее исправить? Что лучше использовать?

Отслеживать

Діма Лучик

задан 4 мар 2021 в 14:10

Діма Лучик Діма Лучик

1 1 1 бронзовый знак

Вы хотите сделать двумерный массив, у которого row (5?) строк, col (5?) столбцов, и каждый элемент такого массива — строка std::string ? Или всё-таки одномерный массив?

4 мар 2021 в 14:17

Во-первых, добавьте текст ошибки. Так будет яснее в чем проблема. Но обратите внимание на предыдущий комментарий: если вы хотите создать массив массивов, то после создания первого массива нужно пройтись по его элементам и присвоить им новые созданные массивы

4 мар 2021 в 14:21

выражение *(strings + i) может быть сокращено до более понятного и очевидного strings[i]

Как полностью очистить массив?

checkAddDel = new int[0]
Массив всегда имеет предопределенную длину, которая не меняется, можно только создать новый с нужным размером.

Ответ написан более трёх лет назад
Комментировать
Нравится 2 Комментировать
Ответы на вопрос 5

Вы можете после использования сделать:
checkAddDel = null;
или
checkAddDel = new int[0];
А заполненный ранее массив уничтожится сборщиком мусора.

Ответ написан более трёх лет назад
Комментировать
Нравится 4 Комментировать

tomnolane

профессиональный разработчик
используйте статический класс Array с методом Resize от самого msdn

var myArray = new int[10] < 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 >; Array.Resize(ref myArray, 0);

Ответ написан более трёх лет назад
Комментировать
Нравится 2 Комментировать
Алексей Павлов @lexxpavlov
Программист, преподаватель
Возможно, лучше взять список List вместо массива:

public List checkAddDel; checkAddDel = new List(Word.Length); // предварительно указывать размер не обязательно, // но если известно заранее, то лучше указать Console.WriteLine(checkAddDel.Count); // 0 for (var i = 0; i < Word.Length; i++) < checkAddDel.Add((i + 1) * 10); >Console.WriteLine(checkAddDel.Count); // размер теперь стал равным Word.Length // используем список DoWork(checkAddDel); checkAddDel.Clear(); // теперь стал пустым Console.WriteLine(checkAddDel.Count); // 0

Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать

mindtester

# @mindtester Куратор тега C#

Список List использовать уже не вариант, очень много переписывать)

вообще то это единственный разумный вариант. а если освоить фичи рефакторинга VS то и переписывать навряд ли страшно много

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *