int r,c;//scanf from user
int** a = new int*[r];// pointer to pointer
for(int i = 0; i < r; ++i)//looping till rows exists
a[i] = new int[c];//allocate for each row how many columns are there
Определяет, равны ли две последовательности путем сравнения их элементов при помощи указанного IEqualityComparer (T).
Вы не можете непосредственно сравнить список & словарь, но Вы могли сравнить список значений из Словаря со списком
Нет, потому что платформа не знает, как сравнить содержание Ваших списков.
Взглянули на это:
http://blogs.msdn.com/abhinaba/archive/2005/10/11/479537.aspx
Нет. Платформа набора не имеет никакого понятия равенства. Если Вы думаете об этом нет никакого способа сравнить наборы, который не субъективен. Например, сравнивая Ваш IList с Вашим Словарем, они были бы равны, если бы все ключи были в IList, все значения были в IList или если оба были в IList? Нет никакого очевидного способа сравнить эти два набора без ведома того, что они должны использоваться для так общей цели, равняется методу, не имеет никакого смысла.
Я не знал о Счетном. Метод SequenceEqual (Вы изучаете что-то каждый день....), но я собирался предложить использовать дополнительный метод; что-то вроде этого:
public static bool IsEqual(this List<int> InternalList, List<int> ExternalList)
{
if (InternalList.Count != ExternalList.Count)
{
return false;
}
else
{
for (int i = 0; i < InternalList.Count; i++)
{
if (InternalList[i] != ExternalList[i])
return false;
}
}
return true;
}
Интересно достаточно, после взятия 2 секунд для чтения о SequenceEqual похоже, что Microsoft создала функцию, которую я описал для Вас.
Смотрите на Счетный. Метод SequenceEqual
var dictionary = new Dictionary<int, string>() {{1, "a"}, {2, "b"}};
var intList = new List<int> {1, 2};
var stringList = new List<string> {"a", "b"};
var test1 = dictionary.Keys.SequenceEqual(intList);
var test2 = dictionary.Values.SequenceEqual(stringList);
.NET Не хватает мощных инструментов для сравнения коллекций. Я разработал простое решение, которое вы можете найти по ссылке ниже:
http://robertbouillon.com/2010/04/29/comparing-collections-in-net/
Это выполнит сравнение на равенство независимо от порядка:
var list1 = new[] { "Bill", "Bob", "Sally" };
var list2 = new[] { "Bob", "Bill", "Sally" };
bool isequal = list1.Compare(list2).IsSame;
Это проверит, были ли добавлены / удалены элементы:
var list1 = new[] { "Billy", "Bob" };
var list2 = new[] { "Bob", "Sally" };
var diff = list1.Compare(list2);
var onlyinlist1 = diff.Removed; //Billy
var onlyinlist2 = diff.Added; //Sally
var inbothlists = diff.Equal; //Bob
Это посмотрит, какие элементы в словаре изменились:
var original = new Dictionary<int, string>() { { 1, "a" }, { 2, "b" } };
var changed = new Dictionary<int, string>() { { 1, "aaa" }, { 2, "b" } };
var diff = original.Compare(changed, (x, y) => x.Value == y.Value, (x, y) => x.Value == y.Value);
foreach (var item in diff.Different)
Console.Write("{0} changed to {1}", item.Key.Value, item.Value.Value);
//Will output: a changed to aaa