Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.60/10: Рейтинг темы: голосов - 10, средняя оценка - 4.60
Kastaneda
Jesus loves me
Эксперт С++
4940 / 3016 / 346
Регистрация: 12.12.2009
Сообщений: 7,612
Записей в блоге: 2
Завершенные тесты: 1
1

Кому интересно поломать голову

31.01.2015, 11:51. Просмотров 1769. Ответов 63
Метки нет (Все метки)

Привет!

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

Предлагаю вам подумать в как и когда может работать данный код (выкладываю именно в том контексте, в который я смотрел, больше не скажу, не интересно будет)

C++
1
2
3
4
5
//где-то в классе
typedef std::set<ClassOne, ClassTwo> _Container;
 
// где-то в методе
return std::find(_Container::begin(), _Container::end(), predicate);
Если кто-то раскусит за 5 секунд, значит я переработал. Я реально минут 5 сидел в это втыкал
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2015, 11:51
Ответы с готовыми решениями:

Кому интересно. Покер
Вообщем, давно ничего не кодил и на днях накатал немного говно кода на тему...

Бинарные деревья ! кому интересно , сюда!;)
задание : Описать процедуру или функцию которая : а) печатает запись,...

прога странно работает=) кому интересно покопать?
написал прогу по подсчету crc-16 (сама функция с википедии).. так вот... когда...

Шифрование "Лозунговым методом" (кому интересно)
Вот работа была сделал -&gt; делюсь:) #include &lt;stdio.h&gt; #include...

В чем интересно загвоздка???интересно разобраться!
Помогите разобраться в чем дело? Switch постоянно зацикливается и бесконечный...

63
taras atavin
4204 / 1767 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
31.01.2015, 11:56 2
Так не честно. У Вас то был весь исходник, а ни каких нарушений синтаксиса здесь нет.
0
Kastaneda
Jesus loves me
Эксперт С++
4940 / 3016 / 346
Регистрация: 12.12.2009
Сообщений: 7,612
Записей в блоге: 2
Завершенные тесты: 1
31.01.2015, 12:04  [ТС] 3
Цитата Сообщение от taras atavin Посмотреть сообщение
У Вас то был весь исходник
да, но я смотрел только в эти строки, потом дошло куда еще нужно посмотреть.

Добавлено через 1 минуту
Цитата Сообщение от taras atavin Посмотреть сообщение
а ни каких нарушений синтаксиса здесь нет.
вот это
Цитата Сообщение от Kastaneda Посмотреть сообщение
C++
1
_Container::begin(), _Container::end()
не смущает?
0
castaway
Эксперт С++
4932 / 3038 / 454
Регистрация: 10.11.2010
Сообщений: 11,117
Записей в блоге: 10
Завершенные тесты: 1
31.01.2015, 12:13 4
Может у класса std::sec есть статические методы begin() и end() ? Или это вообще синглтон..
0
taras atavin
4204 / 1767 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
31.01.2015, 12:13 5
А почему оно должно смущать? Если оно противоречит какому то другому тексту, так его надо показать, телепаты водятся на другом форуме.
0
Kastaneda
Jesus loves me
Эксперт С++
4940 / 3016 / 346
Регистрация: 12.12.2009
Сообщений: 7,612
Записей в блоге: 2
Завершенные тесты: 1
31.01.2015, 12:21  [ТС] 6
Цитата Сообщение от castaway Посмотреть сообщение
Может у класса std::sec есть статические методы begin() и end() ?
это обычный std::set, тот, который мы все с вами знаем. Я тоже грешным делом так подумал, даже документацию открыл. Но нет, конечно же никаких подобных статических методов там нет.

Добавлено через 1 минуту
Цитата Сообщение от taras atavin Посмотреть сообщение
телепаты водятся на другом форуме.
Вопрос задан как раз с целью попробовать себя в телепатии кому-то может быть это интересно.
0
hoggy
Нарушитель
Эксперт С++
7087 / 3130 / 648
Регистрация: 15.11.2014
Сообщений: 7,209
Завершенные тесты: 1
31.01.2015, 12:21 7
Цитата Сообщение от Kastaneda Посмотреть сообщение
typedef std::sec<ClassOne, ClassTwo> _Container;
смущает std::sec.
Не понятно откуда это, и что это такое.

Цитата Сообщение от Kastaneda Посмотреть сообщение
std::find(_Container::begin(), _Container::end(), predicate);
Очевидно, раз это скомпилировалось, то у него есть итераторы, либо нечто, что ведет себя, как итераторы.
0
Kastaneda
Jesus loves me
Эксперт С++
4940 / 3016 / 346
Регистрация: 12.12.2009
Сообщений: 7,612
Записей в блоге: 2
Завершенные тесты: 1
31.01.2015, 12:21  [ТС] 8
Цитата Сообщение от castaway Посмотреть сообщение
Или это вообще синглтон..
нет
0
Tulosba
:)
Эксперт С++
4749 / 3243 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
31.01.2015, 12:22 9
Kastaneda, что за std::sec ?
0
Kastaneda
Jesus loves me
Эксперт С++
4940 / 3016 / 346
Регистрация: 12.12.2009
Сообщений: 7,612
Записей в блоге: 2
Завершенные тесты: 1
31.01.2015, 12:22  [ТС] 10
Цитата Сообщение от hoggy Посмотреть сообщение
смущает std::sec.
аааа, сори, я всех в заблуждение ввел, очепятался. Там std::set
0
hoggy
Нарушитель
Эксперт С++
7087 / 3130 / 648
Регистрация: 15.11.2014
Сообщений: 7,209
Завершенные тесты: 1
31.01.2015, 12:23 11
Цитата Сообщение от Kastaneda Посмотреть сообщение
это обычный std::set, тот, который мы все с вами знаем.
ээээ.... по вашему std::set, это std::sec ?
Не, такое положение вещей конечно смущает.
0
Kastaneda
Jesus loves me
Эксперт С++
4940 / 3016 / 346
Регистрация: 12.12.2009
Сообщений: 7,612
Записей в блоге: 2
Завершенные тесты: 1
31.01.2015, 12:26  [ТС] 12
Цитата Сообщение от hoggy Посмотреть сообщение
ээээ.... по вашему std::set, это std::sec ?
выше написал уже, опечатка. Модераторам сообщил, думаю в скором времени поправят.
0
hoggy
Нарушитель
Эксперт С++
7087 / 3130 / 648
Регистрация: 15.11.2014
Сообщений: 7,209
Завершенные тесты: 1
31.01.2015, 12:27 13
Цитата Сообщение от Kastaneda Посмотреть сообщение
сори, я всех в заблуждение ввел, очепятался. Там std::set
ааа... ну так если это обычный std::set, тогда тут нет ничего не обычного.
хз, что вас могло смутить.


ааа... дошло. Вы их как статические цепляете.
Ну да. Это странно.
0
Kastaneda
Jesus loves me
Эксперт С++
4940 / 3016 / 346
Регистрация: 12.12.2009
Сообщений: 7,612
Записей в блоге: 2
Завершенные тесты: 1
31.01.2015, 12:31  [ТС] 14
Цитата Сообщение от hoggy Посмотреть сообщение
хз, что вас могло смутить.
Может я гоню, но меня смутило конкретно вот это
C++
1
_Container::begin(), _Container::end()
0
castaway
Эксперт С++
4932 / 3038 / 454
Регистрация: 10.11.2010
Сообщений: 11,117
Записей в блоге: 10
Завершенные тесты: 1
31.01.2015, 12:31 15
Возможно, _Container во 2-й и 5-й строках - разные сущности. Нет?
0
Kastaneda
Jesus loves me
Эксперт С++
4940 / 3016 / 346
Регистрация: 12.12.2009
Сообщений: 7,612
Записей в блоге: 2
Завершенные тесты: 1
31.01.2015, 12:36  [ТС] 16
Цитата Сообщение от castaway Посмотреть сообщение
Возможно, _Container во 2-й и 5-й строках - разные сущности. Нет?
нет, одна
0
hoggy
Нарушитель
Эксперт С++
7087 / 3130 / 648
Регистрация: 15.11.2014
Сообщений: 7,209
Завершенные тесты: 1
31.01.2015, 12:37 17
Цитата Сообщение от Kastaneda Посмотреть сообщение
Может я гоню, но меня смутило конкретно вот это
ну очевидно, что раз это скомпилировалось, значит он нашел подходящие.

Это либо статические члены, либо неймспейс.
Надо смотреть контекст.
0
Kastaneda
Jesus loves me
Эксперт С++
4940 / 3016 / 346
Регистрация: 12.12.2009
Сообщений: 7,612
Записей в блоге: 2
Завершенные тесты: 1
31.01.2015, 12:48  [ТС] 18
Цитата Сообщение от hoggy Посмотреть сообщение
Это либо статические члены, либо неймспейс.
Надо смотреть контекст.
Ни то ни другое. В 5-й строке используется именно тот _Container, который во второй строке, т.е. именно std::set.

Добавлено через 1 минуту
можно перефразировать вот так
C++
1
return std::find(std::set<type1, type2>::begin(), std::set<type1, type2>::end(), predicate);
0
hoggy
Нарушитель
Эксперт С++
7087 / 3130 / 648
Регистрация: 15.11.2014
Сообщений: 7,209
Завершенные тесты: 1
31.01.2015, 12:58 19
Цитата Сообщение от Kastaneda Посмотреть сообщение
можно перефразировать вот так
хз. мож у вас там cl, и запись в шаблоне, который не был инстанцирован, а cl в таких случаях позволяет писать любую ботву.

Нужно видеть контекст.
Гадать лень.
0
Kastaneda
Jesus loves me
Эксперт С++
4940 / 3016 / 346
Регистрация: 12.12.2009
Сообщений: 7,612
Записей в блоге: 2
Завершенные тесты: 1
31.01.2015, 13:09  [ТС] 20
Ладно, похоже предположений может быть действительно много. Короче предыдущий разработчик решил что вот так будет очень удобно

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
class MyClass : public std::set<type1, type2> 
{
 
typedef std::set<type1, type2> _Container;
 
public:
    some method()
    {
        return std::find(_Container::begin(), _Container::end(), predicate);
     }
};
Вот эта строка
C++
1
class MyClass : public std::set<type1, type2>
реально в коде выглядит очень страшно (там множественное наследование + 100500 темплейтов), поэтому я решил туда посмотреть в последнюю очередь
0
31.01.2015, 13:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.01.2015, 13:09

Голову уже сломал
DEL

Пришла в голову мысль
Сделать кнопку.....поместить её на рабочий стол, при нажатии на которую...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Закрытая тема Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru