На этот раз HashSet.
Mne naдо перебрать значения и править(удалять) по условию
Но for и set[i] никак ни хотят работать.
А объясняльщики в интернете в один голос твердят: "..HashSet это такая производительность! у-у-у-у.. вот пример как перебирать: forich.."
Блиин!! Похоже они не из головы берут а тупо гуглтранслейтят документацию МС, иначе бы они понимали что начинаючему не до производительности — лишь бы работало пусть и кое-как.
Так как вы перебираете если надо менять значения?
Я пока выкрутился, но чую что так неправильно
Обьявил дополнительный Сет. В будущем может не прокатить
var set2 = new System.Collections.Generic.HashSet<int>();
foreach (var item in set1) if (item < mx && item > mn) set2.Add(item);
set1.ExceptWith(set2);
Re: Oпять непонятки, и где искать ответ тоже не поятно
N>На этот раз HashSet. N>Mne naдо перебрать значения и править(удалять) по условию N>Но for и set[i] никак ни хотят работать. N>А объясняльщики в интернете в один голос твердят: "..HashSet это такая производительность! у-у-у-у.. вот пример как перебирать: forich.." N>Блиин!! Похоже они не из головы берут а тупо гуглтранслейтят документацию МС, иначе бы они понимали что начинаючему не до производительности — лишь бы работало пусть и кое-как. N>Так как вы перебираете если надо менять значения?
N>Я пока выкрутился, но чую что так неправильно N>Обьявил дополнительный Сет. В будущем может не прокатить
N>
N>var set2 = new System.Collections.Generic.HashSet<int>();
N>foreach (var item in set1) if (item < mx && item > mn) set2.Add(item);
N>set1.ExceptWith(set2);
N>
Круто. коментарий не забудь поставить // nt2000 is cool
а что действительно нет доступа к данным по индексу как-то вот так set[0]?
a kaк же вы живёте без?! такое похоже необходимо сплоширядом.. тем более линг появился недавно.. вроде..
Re[3]: Oпять непонятки, и где искать ответ тоже не поятно
Здравствуйте, nt2000, Вы писали:
N>а что действительно нет доступа к данным по индексу как-то вот так set[0]? N>a kaк же вы живёте без?! такое похоже необходимо сплоширядом.. тем более линг появился недавно.. вроде..
Твоя в интернет ходить. МСДН читать. Нам все рассказать.
Re[3]: Oпять непонятки, и где искать ответ тоже не поятно
Здравствуйте, nt2000, Вы писали:
N>а что действительно нет доступа к данным по индексу как-то вот так set[0]? N>a kaк же вы живёте без?! такое похоже необходимо сплоширядом.. тем более линг появился недавно.. вроде..
Если надо индекс — можно скопировать в массив
HashSet<int> hashset = ...получаем хэш-сет...
var array = hashset.ToArray(); // если что, может потребоваться "using System.Linq;"
...теперь можно обращаться к array[i]...
Re[4]: Oпять непонятки, и где искать ответ тоже не поятно
Здравствуйте, nt2000, Вы писали:
N>На этот раз HashSet. N>Mne naдо перебрать значения и править(удалять) по условию N>Но for и set[i] никак ни хотят работать. N>А объясняльщики в интернете в один голос твердят: "..HashSet это такая производительность! у-у-у-у.. вот пример как перебирать: forich.." N>Блиин!! Похоже они не из головы берут а тупо гуглтранслейтят документацию МС, иначе бы они понимали что начинаючему не до производительности — лишь бы работало пусть и кое-как.
Здравствуйте, nt2000, Вы писали:
N>На этот раз HashSet. N>Mne naдо перебрать значения и править(удалять) по условию N>Но for и set[i] никак ни хотят работать. N>А объясняльщики в интернете в один голос твердят: "..HashSet это такая производительность! у-у-у-у.. вот пример как перебирать: forich.." N>Блиин!! Похоже они не из головы берут а тупо гуглтранслейтят документацию МС, иначе бы они понимали что начинаючему не до производительности — лишь бы работало пусть и кое-как.
N>Так как вы перебираете если надо менять значения?
N>Я пока выкрутился, но чую что так неправильно N>Обьявил дополнительный Сет. В будущем может не прокатить
N>
N>var set2 = new System.Collections.Generic.HashSet<int>();
N>foreach (var item in set1) if (item < mx && item > mn) set2.Add(item);
N>set1.ExceptWith(set2);
N>
Это какой-то жесть. Почитайте об разных типах коллекций. Не все они имеют доступ по индексу и это обусловленно тем как они работают. И это касается ВСЕХ языков.
Если вам надо перелопатить HashSet в таком стиле, просто сделайте копию в другой HashSet. Что вы, кстати и сделали, но через жопу.
Re: Oпять непонятки, и где искать ответ тоже не поятно
N>Блиин!! Похоже они не из головы берут а тупо гуглтранслейтят документацию МС, иначе бы они понимали что начинаючему не до производительности — лишь бы работало пусть и кое-как.
Если не до производительности, то возьми List, у него есть индекс.
Re[2]: Oпять непонятки, и где искать ответ тоже не поятно
Здравству(йте, nt2000, Вы писали:
N>На этот раз HashSet. N>Mne naдо перебрать значения и править(удалять) по условию N>Но for и set никак ни хотят работать. N>А объясняльщики в интернете в один голос твердят: "..HashSet это такая производительность! у-у-у-у.. вот пример как перебирать: forich.." N>Блиин!! Похоже они не из головы берут а тупо гуглтранслейтят документацию МС, иначе бы они понимали что начинаючему не до производительности — лишь бы работало пусть и кое-как.
N>Так как вы перебираете если надо менять значения?
N>Я пока выкрутился, но чую что так неправильно N>Обьявил дополнительный Сет. В будущем может не прокатить
N>
N>var set2 = new System.Collections.Generic.HashSet<int>();
N>foreach (var item in set1) if (item < mx && item > mn) set2.Add(item);
N>set1.ExceptWith(set2);
N>
Перебирать с изменением нельзя, т.к. в общем случае фреймворку непонятно, что делать с итератором. Ну, то есть он показывает на какой-то элемент, а этот элемент удалили. Что должно происходить при обращении к Current?
Или ещё хуже: в процессе итерации [i]добавили какой-то элемент. Должен ли он попасться нам, если мы продолжаем итерировать итератор? Или не должен? Или это от чего-то зависит?
В общем, любое решение порождает трудноуловимые глюки.
Так что, наиболее подходящий способ для начинающего, которому не до производительности — это писать код ровно так, как сформулировано задание.
Ваш метод решения не требует второго множества — ведь аргумент ExceptWith имеет тип IEnumerable<T>.
Поэтому можно напсать просто вот так:
var set2 = (from item in set1 where (item < mx && item > mn) select item).ToArray(); // принудим материализацию, чтобы избежать той же проблемы.
set1.ExceptWith(set2);
Но для вашей цели есть способ записать это короче и с лучшей производительностью:
А в целом, перебора с модификацией лучше всего избегать даже в тех случаях, когда вы пользуетесь индекнсым доступом. Когда нам нужен перебор с модификацией, мы разделяем фазы перебора и фазы модификации.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Oпять непонятки, и где искать ответ тоже не поятно
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Здравствуйте, Danchik, Вы писали:
D>>Это какой-то жесть. Почитайте об разных типах коллекций.
НС>По моему надо просто товарищу понять, что программирование это явно не его.
скорее в интернетах отвечать не твое, вон твои братья накропали что я ничего не понял и прибежал сюда
Re[2]: Oпять непонятки, и где искать ответ тоже не поятно
ёомоё! вот это как раз мне нужно было бы!
наверное меня сбило с тольку where. наверное я решил что это линг и убрался оттуда. (я не могу использовать linq)
Re[4]: Oпять непонятки, и где искать ответ тоже не поятно