Прошу сильно меня не пинать, но ответе пожалуйста на такой вопрос....
В Delphi есть такой оператор in и выполняет он операцию For an ordinal O and a set S, O in S is True just in case O is a member of S.
В С++ есть что нибудь подобное ??? А то я найти не могу
Здравствуйте, dar veter, Вы писали:
DV>Прошу сильно меня не пинать, но ответе пожалуйста на такой вопрос.... DV>В Delphi есть такой оператор in и выполняет он операцию For an ordinal O and a set S, O in S is True just in case O is a member of S. DV>В С++ есть что нибудь подобное ??? А то я найти не могу
Здравствуйте, sercher, Вы писали:
S>Здравствуйте, dar veter, Вы писали:
DV>>Прошу сильно меня не пинать, но ответе пожалуйста на такой вопрос.... DV>>В Delphi есть такой оператор in и выполняет он операцию For an ordinal O and a set S, O in S is True just in case O is a member of S. DV>>В С++ есть что нибудь подобное ??? А то я найти не могу
S> неа, нету
Тогда как быть .... писать на ассме ? ... Почему-то использование switch генерит нерациональный код ?
Здравствуйте, dar veter, Вы писали:
DV>В Delphi есть такой оператор in и выполняет он операцию For an ordinal O and a set S, O in S is True just in case O is a member of S. DV>В С++ есть что нибудь подобное ???
Здравствуйте, sercher, Вы писали:
S>Здравствуйте, dar veter, Вы писали:
DV>>Прошу сильно меня не пинать, но ответе пожалуйста на такой вопрос.... DV>>В Delphi есть такой оператор in и выполняет он операцию For an ordinal O and a set S, O in S is True just in case O is a member of S. DV>>В С++ есть что нибудь подобное ??? А то я найти не могу
S> неа, нету
Оправданных случаев применения оператора is крайне мало. Обычно надо вместо него использовать оператор as. В C++ аналог -- dynamic_cast<>(), если конечно, поддержка RTTI доступна.
Здравствуйте, voxel3d, Вы писали:
S>> неа, нету
V>Оправданных случаев применения оператора is крайне мало. Обычно надо вместо него использовать оператор as. В C++ аналог -- dynamic_cast<>(), если конечно, поддержка RTTI доступна.
Вообщем я не про приведения к заданому типу спрашивал ... а про членство
Re: Оператор in
От:
Аноним
Дата:
14.10.03 12:30
Оценка:
Здравствуйте, dar veter, Вы писали:
DV>Прошу сильно меня не пинать, но ответе пожалуйста на такой вопрос.... DV>В Delphi есть такой оператор in и выполняет он операцию For an ordinal O and a set S, O in S is True just in case O is a member of S. DV>В С++ есть что нибудь подобное ??? А то я найти не могу
std::binary_search(S.begin(), S.end(), O)
Re[2]: Оператор in
От:
Аноним
Дата:
14.10.03 12:51
Оценка:
Здравствуйте, Аноним, Вы писали:
DV>>Прошу сильно меня не пинать, но ответе пожалуйста на такой вопрос.... DV>>В Delphi есть такой оператор in и выполняет он операцию For an ordinal O and a set S, O in S is True just in case O is a member of S. DV>>В С++ есть что нибудь подобное ??? А то я найти не могу
Здравствуйте, dar veter, Вы писали:
DV>Прошу сильно меня не пинать, но ответе пожалуйста на такой вопрос.... DV>В Delphi есть такой оператор in и выполняет он операцию For an ordinal O and a set S, O in S is True just in case O is a member of S. DV>В С++ есть что нибудь подобное ??? А то я найти не могу
Смотри в сторону STL.
Во-первых, там еасть set, а во-вторых — масса алгоритмов поиска, которые и дают тебе ответ in или не in
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, Анатолий Широков, Вы писали:
АШ>unsigned int bitset = 1; АШ>unsigned int element = 0;
АШ>bool exist = (1 << element) & bitset);
Брр .... сорри не понял, как это применить... например:
Необходимо определить, является WORD w членом вот этого массива
{0x7E7E, 0x3F3F, 0x9F9F, 0xCFCF, 0xE7E7, 0xF3F3, 0xF9F9, 0xFCFC} ?
DV> Брр .... сорри не понял, как это применить... например: DV> Необходимо определить, является WORD w членом вот этого массива DV> {0x7E7E, 0x3F3F, 0x9F9F, 0xCFCF, 0xE7E7, 0xF3F3, 0xF9F9, 0xFCFC} ?
Если такой массив элементов, то, конечно, мой совет пустое. Но вот если элементов всего восемь и они пронумерованы от 0 до 7, то бинарная арифметика, конечно, предпочтительней.
А в этом кокретном случае я бы, конечно, использовал следующий подход:
WORD array[] = {0x3F3F, 0x7E7E, 0x9F9F, 0xCFCF, 0xE7E7, 0xF3F3, 0xF9F9, 0xFCFC};
typedef WORD* iterator;
iterator b = array;
iterator e = array + sizeof(array)/sizeof(array[0]);
bool exist = std::binary_search(b, e, w);
Re[6]: Оператор in
От:
Аноним
Дата:
14.10.03 14:12
Оценка:
Здравствуйте, dar veter, Вы писали:
DV> Брр .... сорри не понял, как это применить... например: DV> Необходимо определить, является WORD w членом вот этого массива DV> {0x7E7E, 0x3F3F, 0x9F9F, 0xCFCF, 0xE7E7, 0xF3F3, 0xF9F9, 0xFCFC} ?
Набор значений именно таков?
Re[3]: Оператор in
От:
Аноним
Дата:
14.10.03 14:22
Оценка:
Здравствуйте, Анатолий Широков, Вы писали:
LVV>>Смотри в сторону STL. LVV>>Во-первых, там еасть set, а во-вторых — масса алгоритмов поиска, которые и дают тебе ответ in или не in
АШ>Только не одновременно. Либо set + set::find, либо vector + sort + binary_search.
А почему не одновременно? Вот мне совсем не очевидно, что лучше с set: его find или binary_search...
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, dar veter, Вы писали:
DV>> Брр .... сорри не понял, как это применить... например: DV>> Необходимо определить, является WORD w членом вот этого массива DV>> {0x7E7E, 0x3F3F, 0x9F9F, 0xCFCF, 0xE7E7, 0xF3F3, 0xF9F9, 0xFCFC} ?
А>Набор значений именно таков?
Да ... именно таков ... это комбинации сигнальной единицы одного прибора, для которого пишется это программа... точнее переписывается с Delphi
P.S. сообственно я програмист на С++ не сильный, не давно только перешел. До этого на Delphi просидел более 8 лет.
АШ>>Только не одновременно. Либо set + set::find, либо vector + sort + binary_search.
А>А почему не одновременно? Вот мне совсем не очевидно, что лучше с set: его find или binary_search...
Почему не очевидно, set::iterator не является итератором произвольного доступа. Этого достаточно?