C как сравнить элементы массива
Перейти к содержимому

C как сравнить элементы массива

как сравнить элементы одного массива между собой

Другие ответы правильно решают вашу проблему обнаружения, если есть какие-либо повторяющиеся записи, использующие GroupBy . Однако, если вы намереваетесь заменить эти дублирующиеся записи на новую несуществующую запись в массиве, вы можете использовать методы ниже:

Этот код гарантирует, что массив elements всегда будет иметь уникальные значения.

Примечание. — Цикл do. while продолжает генерировать случайные числа, если он не находит уникальное число. Поэтому, если размер вашего массива больше, чем диапазон генерируемых случайных чисел, вы застрянете в бесконечном цикле.

Используя силу linq, вы можете использовать GroupBy для поиска дубликатов.

Кроме того, Enumerable.Range — это быстрый способ создания списков.

Если вам нужно обработать дубликаты, вы можете повторить их и использовать .Key

Самый простой способ сравнить массивы в C#

В Java, массивы.equals () позволяет легко сравнивать содержимое двух базовых массивов (перегрузки доступны для всех основных типов).

есть ли такая вещь в C#? Есть ли «волшебный» способ сравнения содержимого двух массивов в C#?

11 ответов

можно использовать SequenceEqual. Это работает для любого IEnumerable<T> , а не просто массивы.

используйте SequenceEqual в LINQ.

также для массивов (и кортежей) вы можете использовать новые интерфейсы из .NET 4.0: IStructuralComparable и IStructuralEquatable. Используя их, вы можете не только проверить равенство массивов, но и сравнить их.

на .Net версии 4.0 и выше, вы можете сравнивать элементы в массиве или кортежей с помощью структурные сравнения тип:

SequenceEqual вернет true, только если выполнены два условия или выполнены.

  1. они содержат те же элементы.
  2. элементы в том же порядке.

если вы хотите проверить, содержат ли они одни и те же элементы независимо от их порядка, и ваша проблема имеет тип

содержит ли values2 все значения, содержащиеся в values1?

вы можете использовать метод расширения LINQ Enumerable.Except и затем проверить, если результат имеет любое значение. Вот пример

а также с помощью этого вы получаете различные элементы, а также автоматически. Двух зайцев одним выстрелом.

имейте в виду, если вы выполняете свой код так

вы получите разные результаты.

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

для модульных тестов, вы можете использовать CollectionAssert.AreEqual вместо Assert.AreEqual .

это, вероятно, самый простой способ.

поэлементно сравнивать ? как насчет

замените условие (a==b) на все, что вы хотите сравнить в a и b.

Я сделал это в visual studios, и он работал отлично; сравнение индекса массивов по индексу с коротким этим кодом.

выход будет; соответствующие номера 7 Номера не совпадающие 3

для некоторых приложений может быть лучше:

Если вы хотите обработать null входы изящно, и игнорировать порядок элементов, попробуйте следующее решение:

Как сравнить элемент массива с элементами заданного массива?

Тебе нужно два цикла, первый — идет по массиву символов, второй — по массиву строки, в зависимости от того какая у тебя строка — вместо 7 ставь либо n (если строка из n символов) или другое число, если оно заранее известно.

user avatar

Если ваш s — это std::string , то ответ на вопрос дается простым

А если вы оформите ваш cif в виде нуль-терминированной строки

то можно будет записать и чуть короче

user avatar

Всё ещё ищете ответ? Посмотрите другие вопросы с метками c++ или задайте свой вопрос.

Site design / logo © 2022 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2022.6.10.42345

Нажимая «Принять все файлы cookie», вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

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

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