Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++
Войти
Регистрация
Восстановить пароль
Результаты опроса: Почему вы избегаете использовать С++11 ?
еще не дошел до изучения. 23 37.10%
а зачем мне оно? 13 20.97%
мой компилятор не поддерживает. 18 29.03%
а что это? оО 11 17.74%
Опрос с выбором нескольких вариантов ответа. Голосовавшие: 62. Вы ещё не голосовали в этом опросе

 
 
Рейтинг: Рейтинг темы: голосов - 81, средняя оценка - 4.65
niXman
Эксперт С++
3202 / 1451 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
#1

Почему вы избегаете использовать возможности С++11 ? - C++

13.01.2012, 12:08. Просмотров 11306. Ответов 123
Метки нет (Все метки)

всем привет.

сабж.

я-то, в полную использую. везде где только могу.
но частенько вижу вопросы типа: "а без использования С++0х нельзя?"
любопытна аргументация.

благодарен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2012, 12:08
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Почему вы избегаете использовать возможности С++11 ? (C++):

Почему нельзя использовать более одной TServerSocket?
Пробовал использовать в программе две компоненты TserverSocket и не получилось....

Почему следует избегать явного приведения типов? (по возможности)
Почему следует избегать явного приведения типов? (по возможности)

Почему не рекомендуется использовать препроцессор?
Я сейчас активно пользуюсь #define для упрощения понимания кода. Например, у...

Почему не получается использовать bitset в VC++?
Никак не получается использовать bitset в VC++6 . Очень надо - двоичный вектор...

Почему break нельзя использовать в if?
почему break нельзя использовать в if вот код if(f.eof()==1) { break;...

Почему плохо использовать unsigned int?
Почему плохо использовать unsigned int и чему он удобней для представления...

123
Voivoid
708 / 280 / 15
Регистрация: 31.03.2013
Сообщений: 1,339
01.08.2016, 21:42 #101
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Но как бы у меня к примеру такого в районе 0
Лол, вообще-то большая часть алгоритмов принимает в качестве аргумента какую-либо функцию
0
HelicopterK52
780 / 210 / 32
Регистрация: 27.07.2016
Сообщений: 474
Завершенные тесты: 1
01.08.2016, 22:01 #102
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
int bar=5;//вот так
Цитата Сообщение от silent_1991 Посмотреть сообщение
In-place инициализация полей тоже крутая вещь.
Держите:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
 
 
class foo{
public:
    int bar=5;//вот так 
};
 
 
 
int main()
{
    foo f;
    std::cout << f.bar << std::endl;
}
http://rextester.com/OVJ52706

Надеюсь, довольны оба.
0
Fulcrum_013
Заблокирован
01.08.2016, 22:38 #103
Цитата Сообщение от Voivoid Посмотреть сообщение
Лол, вообще-то большая часть алгоритмов принимает в качестве аргумента какую-либо функцию
Имеются в виду алгоритмы из std:: algoritms? У меня их пользовать негде.
Основная задача с контейнерами - пройти по спискам обработки, вызвать метод для каждого хранимого (вызываемый метод для каждого из списков обработки разный), при этом учесть что внутри метода объект может либо переместится в другой список либо вообще удалиться.
0
Voivoid
708 / 280 / 15
Регистрация: 31.03.2013
Сообщений: 1,339
01.08.2016, 23:21 #104
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Имеются в виду алгоритмы из std:: algoritms? У меня их пользовать негде.
Основная задача с контейнерами - пройти по спискам обработки, вызвать метод для каждого хранимого
Не суть важно std или нет. Т.е. разные поиски, подсчеты, группировки, отображения, фильтры, свертки, упорядочивания и прочее не нужны? Ну ок, вопросов больше не имею
0
Fulcrum_013
Заблокирован
01.08.2016, 23:37 #105
Цитата Сообщение от Voivoid Посмотреть сообщение
Т.е. разные поиски, подсчеты, группировки, отображения,
Они сгруппированы по спискам отработки. При изменении состояния добавляются/удаляются в/из соответсвующего списка обработки. (функционал в базовых шаблонных классах от которого порождаются контейнер-мультисписок и содержимый объект). В результате в содержимом объекте добавляются только логика включения/выключения переключателей нахождения в том или ином списке. В общем получается что группировка по спискам/она же нужная выборка поддерживается автоматически. При этом список нужных выборок/групп всегда известен заранее.
0
silent_1991
Эксперт С++
5007 / 3067 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
02.08.2016, 06:17 #106
HelicopterK52, вы это к чему?
0
Fulcrum_013
Заблокирован
02.08.2016, 06:34 #107
Цитата Сообщение от silent_1991 Посмотреть сообщение
Не понял только, почему вы её RAII обозвали)
Resource Allocation Is Initialisation
1
silent_1991
Эксперт С++
5007 / 3067 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
02.08.2016, 07:12 #108
Fulcrum_013, вообще, Resource Acquisition Is Initialization, но я о другом. По мне, так здесь этот термин не подходит. Потому что инициализация полей в конструкторе точно так же происходит во время инициализации объекта - захвате ресурса, а не разнесена во времени с этим действием.
1
vxg
Модератор
3231 / 2034 / 319
Регистрация: 13.01.2012
Сообщений: 7,885
02.08.2016, 07:50 #109
silent_1991, класс дефинишн из инициализэйшн)?
0
Кудаив
409 / 408 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
Завершенные тесты: 2
02.08.2016, 08:19 #110
Fulcrum_013, умных слов много, но все какая то вода голимая
0
silent_1991
02.08.2016, 08:19
  #111

Не по теме:

vxg, следующий шаг, ага. Ждём в стандарте 37 года "задумка класса есть инициализация"

0
Avazart
Эксперт С++
7683 / 5592 / 543
Регистрация: 10.12.2010
Сообщений: 25,073
Записей в блоге: 17
05.09.2016, 01:42 #112
Цитата Сообщение от HelicopterK52 Посмотреть сообщение
Держите:
А мне вот такая вещь не очень нравится, ибо :

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
class foo
{
public:
    int bar=5; //вот так 
    
    foo();
};
 
// Где- то в cpp
foo::foo():bar(10)
{
}
 
 
int main()
{
    foo f;
    std::cout << f.bar << std::endl; // 10
}
http://ideone.com/d2Q6jH

Добавлено через 11 минут
Как в принципе и идея повсеместного auto
C++
1
auto x= Y(z);
И думай что такое Y? конструктор или функция? Какой тип x в итоге?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
 
//class Y
//{
//  public:
//     Y(int z){}
//};
 
//
int* Y(int z){ return new int[z]; }
 
int main() 
{
    auto x= Y(10);
    return 0;
}
http://ideone.com/5HKfcC
1
HelicopterK52
780 / 210 / 32
Регистрация: 27.07.2016
Сообщений: 474
Завершенные тесты: 1
05.09.2016, 02:52 #113
Цитата Сообщение от Avazart Посмотреть сообщение
А мне вот такая вещь не очень нравится
Я рад за Вас.
Цитата Сообщение от Avazart Посмотреть сообщение
ибо
И что тут не так? Код работает точно так, как его написал программист.
Если программист писал его одним место, оно и работать будет соответствуще.
То, что Вы привели не является для меня проблемой.
Цитата Сообщение от Avazart Посмотреть сообщение
Как в принципе и идея повсеместного auto
Опять нечно притянутое за уши.
Ведь какой-нибудь
typename X<T>::Y<T, U>::type::Z::Container::value_type::container::iterator::value_type::size_type куда лучше.
Цитата Сообщение от Avazart Посмотреть сообщение
И думай что такое Y?
Зачем мне это? Привести чушь, а потом пытаться её оспорить - круто.
Цитата Сообщение от Avazart Посмотреть сообщение
Какой тип x в итоге?
Не поверите, но именно тот, который выведет auto. Неожиданно?
Цитата Сообщение от Avazart Посмотреть сообщение
конструктор или функция?
Ну вот другой пример:
C++
1
MyType x = ZZZ(10);
что такое MyType и ZZZ(10)? Оно ведь тоже где-то в глубине заголовочников,
здесь нет auto, так что по Вашей теории Вы ответить должны без знания контекста.

Надеюсь, Вы поняли нелепость Ваших аргументов, исходя из нелепости моих.
0
Avazart
Эксперт С++
7683 / 5592 / 543
Регистрация: 10.12.2010
Сообщений: 25,073
Записей в блоге: 17
05.09.2016, 03:00 #114
Цитата Сообщение от HelicopterK52 Посмотреть сообщение
И что тут не так? Код работает точно так, как его написал программист.
То что теперь работать с кодом сложнее, нужно будет сразу просматривать оба файла.
Цитата Сообщение от HelicopterK52 Посмотреть сообщение
Ведь какой-нибудь
Для этого есть typedef

Добавлено через 1 минуту
Цитата Сообщение от HelicopterK52 Посмотреть сообщение
что такое MyType и ZZZ(10)?
MyType явно тип, ZZZ(10) явно не конструктор MyType, и это достаточно много что понимания того что происходит в коде не шарясь по другим файлам лишний раз.
1
HelicopterK52
780 / 210 / 32
Регистрация: 27.07.2016
Сообщений: 474
Завершенные тесты: 1
05.09.2016, 03:02 #115
Цитата Сообщение от Avazart Посмотреть сообщение
То что теперь работать с кодом сложнее, нужно будет сразу просматривать оба файла.
Вам в любом случае придется это делать.
Цитата Сообщение от Avazart Посмотреть сообщение
Для этого есть typedef-ы
ага, я вон привел пример, в котором есть MyType.
можете сказать что это, не просматривая другие файлы?

Добавлено через 1 минуту
Цитата Сообщение от Avazart Посмотреть сообщение
ZZZ(10) явно не конструктор
Ошибочка:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
struct ZZZ
{
    ZZZ(int){}
    operator int(){return 0;}
};
 
 
int main()
{
    int x = ZZZ(10);
}
0
Avazart
Эксперт С++
7683 / 5592 / 543
Регистрация: 10.12.2010
Сообщений: 25,073
Записей в блоге: 17
05.09.2016, 03:04 #116
Цитата Сообщение от HelicopterK52 Посмотреть сообщение
ага, я вон привел пример, в котором есть MyType.
можете сказать что это, не просматривая другие файлы?
Я же говорю тип, этого достаточно. Если я просматривал его заголовочный файл то вообще хорошо.
Более того можно сделать предположение(при вменяемом именовании и коде) указатель это или нет.

Цитата Сообщение от HelicopterK52 Посмотреть сообщение
Цитата Сообщение от Avazart Посмотреть сообщение
MyType явно тип, ZZZ(10) явно не конструктор
Ошибочка
Полная цитата звучит так
Цитата Сообщение от Avazart Посмотреть сообщение
MyType явно тип, ZZZ(10) явно не конструктор MyType
1
HelicopterK52
780 / 210 / 32
Регистрация: 27.07.2016
Сообщений: 474
Завершенные тесты: 1
05.09.2016, 03:07 #117
Цитата Сообщение от Avazart Посмотреть сообщение
Я же говорю тип, этого достаточно.
А auto выводит не тип?
А может у меня MyType это
C++
1
#define MyType
???
Цитата Сообщение от Avazart Посмотреть сообщение
Если я просматривал его заголовочный файл то вообще хорошо.
Если я просматривал объявление Вашего Y то тоже знаю что это.
А если не просматривать, то и ZZZ не узнать что такое.

Добавлено через 1 минуту
Цитата Сообщение от Avazart Посмотреть сообщение
Полная цитата звучит так
Разницы не имеет:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
struct ZZZ
{
    ZZZ(int){}
};
 
 
 
using MyType = ZZZ;
 
 
 
int main()
{
    MyType x = ZZZ(10);
}
0
Avazart
Эксперт С++
7683 / 5592 / 543
Регистрация: 10.12.2010
Сообщений: 25,073
Записей в блоге: 17
05.09.2016, 03:10 #118
Цитата Сообщение от HelicopterK52 Посмотреть сообщение
так что по Вашей теории Вы ответить должны без знания контекста.
В идеале да, но С++ контекстно зависимый язык изначально, и тем не менее есть то что менее читаемо и более читаемо.
0
HelicopterK52
780 / 210 / 32
Регистрация: 27.07.2016
Сообщений: 474
Завершенные тесты: 1
05.09.2016, 03:10 #119
Я уже написал, что если код писать через одно место,
то точно через тоже место потом и придется с этим кодом работать.
И никакие отказы от auto, также как и его применение не помогут.
Если код написан адекватно, то тип, выводимый auto либо
и так очевиден, либо вообще вторичен в данном месте и его знание не дает особой пользы,
либо тип очень сложно или вообще нельзя вывести обычными методами.
0
Avazart
Эксперт С++
7683 / 5592 / 543
Регистрация: 10.12.2010
Сообщений: 25,073
Записей в блоге: 17
05.09.2016, 03:12 #120
Цитата Сообщение от HelicopterK52 Посмотреть сообщение
А может у меня MyType это
Тогда нескомпилится.

Цитата Сообщение от HelicopterK52 Посмотреть сообщение
Разницы не имеет:
Еще какая разница.

auto приводит нас к тому что нужно читать код не слева на право как это обычно делается, а справа налево, т.е довольно непривычный способ ранее для С++. (что бы по конструктору/функции понять какой тип)
1
05.09.2016, 03:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.09.2016, 03:12
Привет! Вот еще темы с решениями:

Почему не стоит использовать ^(XOR) в swap
Прочитал статейку, ...

Почему clear необходимо использовать до seekg?
...и нельзя сразу после? Долго не могла решить проблему пока не наткнулась на...

Пояснить, почему в примере не рекомендуется использовать закрытое наследование
Всем доброго времени суток ! Помогите пожалуйста разобраться с этой фразой...

Почему нельзя в конструкторе использовать параметр по умолчанию, если конструктор не встроен?
То есть честно говоря, вопрос так надо ставить: почему если конструктор...


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

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

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