Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 32, средняя оценка - 4.66
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
#1

Использование нововведений C++0x - C++

04.08.2010, 22:30. Просмотров 4061. Ответов 60
Метки нет (Все метки)

Красиво на самом деле... Вопрос, есть-ли резон использовать так, или новый стандарт стоит использовать в меру?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
template <typename T>
T Sum(T n, T m)
{
    return n+m;
}
 
int main()
{
    auto n=5.483, m=3.323;
    decltype(Sum(n,m)) sum=Sum(n,m);
    std::cout<<sum<<'\n';
    return 0;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.08.2010, 22:30     Использование нововведений C++0x
Посмотрите здесь:

Использование расширений формы и иных нововведений в 1С - 1С
Добрый день, уважаемые форумчане. Имеется задача - создать собственное тиражируемое решение на базе типового. И возникает куча вопросов...

Одно из нововведений в .net 4.5 - portable class libraries: что это - .NET
Одно из нововведений в .net 4.5 - portable class libraries. http://msdn.microsoft.com/en-us/library/gg597391(v=vs.110).aspx Кто...

Придумать сложное задание для Java 8 с использованием нововведений языка - Java SE
Знакомый попросил дать какое-нибудь серьезное задание на java 8, чтобы он смог использовать там все нововведения языка (лямбды и т.д.)....

Работа с двумерными числовыми массивами. Использование указателей. Использование функций пользователя. - C++
Помогите пожалуйста!!!!!!! Сделать три варианта: первый вариант – передача данных между функциями с помощью глобального...

Создание и использование своих @NamedQueries. Использование EntityManager - Java EE
Добрый день! Создавал классы сущностей и сессий через NetBeans генераторы кода. Использование стандартных...

Задачи на использование событий. Осуществить использование событий в программе с применением синтаксиса обработчика, рекомендованного для среды NET Fr - C#
NET Framework. Программа для поиска простых чисел среди чисел Фибоначчи. При нахождении очередного простого числа активировать событие...

C/C++ Использование функций, использование break - C++
Здравствуйте. Не знал как назвать тему, боялся что, если назову &quot;КАК ЭТО РАБОТАЕТ?&quot; то её удалят. Пишу программу для вычисления длинных...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
08.12.2010, 02:18     Использование нововведений C++0x #46
как можно задать чтобы не вводить каждый раз -enable-auto-import и по возможности -std=c++0x?
Спасибо
norge_goth, используй скрипты компиляции или make-файлы
niXman
Эксперт C++
3134 / 1446 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
08.12.2010, 02:34     Использование нововведений C++0x #47
Цитата Сообщение от norge_goth Посмотреть сообщение
вроде как тут http://gcc.gnu.org/gcc-4.4/cxx0x_status.html напротив auto-typed variables стоит Yes (то есть реализовано)
во дворе стоИт сарай. на нем написано х*й. но там дрова!
Manjak
269 / 175 / 7
Регистрация: 12.03.2010
Сообщений: 494
08.12.2010, 08:02     Использование нововведений C++0x #48
На самом деле самая большая плюшка нового стандарта - это vector<vector<int>>, две закрывающих скобки теперь не воспринимаются как оператор
А вообще много чего уже руки чешутся попробовать: С++0х потоки и синхронизации в действии, делегаты(в особенности асинхронные), variadic templates (это вообще жесть, для примера можно посмотреть std::tuple - кортеж данных, тоже очень классная плюшка), std::bind, std::function , принятые из буста, вообще незаменимые.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
08.12.2010, 08:29     Использование нововведений C++0x #49
Цитата Сообщение от ForEveR Посмотреть сообщение
auto n=5.483, m=3.323;
А нафиг вообще объявлять переменные без явного указания их типа? Автор то их тип точно знает, а компил?
Цитата Сообщение от ForEveR Посмотреть сообщение
decltype(Sum(n,m)) sum=Sum(n,m);
Сам Страуструп не поймёт, что здесь имелось ввиду.
Цитата Сообщение от ForEveR Посмотреть сообщение
std::cout<<sum<<'\n';
А это давно есть.
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
2. Если тип выражения заранее не известен:
Если у тебя это возможно, то ты точно не способен писать нормальный софт.
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
1. Если тип переменной имеет очень большую длину и можно запутаться:
Костыли под неудачные имена типов - нейтральное свойство, так как в любом случае надо избегать самих таких типов.
Цитата Сообщение от fasked Посмотреть сообщение
[] (T1 a, T2 b)
Куда эзотеричнее?

Добавлено через 3 минуты
Цитата Сообщение от ForEveR Посмотреть сообщение
Абсолютно не понял как использовать ссылку на временный объект (&&) и в каких случаях сие вообще возможно и нужно...
Внутри. А при возврате подобных значений превращается в наглядное пособие, как делать не надо.

Добавлено через 1 минуту
Цитата Сообщение от niXman Посмотреть сообщение
это что за батарея?
Как раз это давно есть и вполне понятно.
Manjak
269 / 175 / 7
Регистрация: 12.03.2010
Сообщений: 494
08.12.2010, 08:30     Использование нововведений C++0x #50
Цитата Сообщение от taras atavin Посмотреть сообщение
А нафиг вообще объявлять переменные без явного указания их типа? Автор то их тип точно знает, а компил?

Сам Страуструп не поймёт, что здесь имелось ввиду.

А это давно есть.
Если у тебя это возможно, то ты точно не способен писать нормальный софт.

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

Куда эзотеричнее?

Добавлено через 3 минуты

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

Не по теме:

Даже ничего адекватного в ответ на такую чушь в голову не приходит

taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
08.12.2010, 09:04     Использование нововведений C++0x #51
Цитата Сообщение от Manjak Посмотреть сообщение
На самом деле самая большая плюшка нового стандарта - это vector<vector<int>>
поставь между >> пробел и скорми всё это старому компилу.

Добавлено через 32 минуты
В существующем стандарте не очень удобно то, что нельзя перегрузить
C++
1
... & operator [] (int i, int j);
C++
1
... & operator [] (int i, int j, int k);
и тому подобные операторы. Я конечно понимаю, что многомерный массив есть массива массивов, но если он ещё и динамический, то получается динамический массив динамических массивов. А теперь прикиньте: при этом он должен ещё иметь следующее свойство: диапазоны допустимых значений одних индексов не зависят от конкретных значений других. И + ещё сами элементы во всех массивах должны иметь определённое общее значение какого нибудь поля. Ну ка попробуйте навскидку хотябы задекларировать такой массив, да ещё оптимально! А уж реализация...! А если можно было бы сделать многомерный массив не через массив массивов, то можно в операторе индексации возвращать сразу элемент вместо промежуточного массива, что намного проще выглядит. Так вот, мне интересно, будет ли когда нибудь в с++, или его потомке такая возможность.
Jupiter
08.12.2010, 09:09
  #52

Не по теме:

Цитата Сообщение от taras atavin Посмотреть сообщение
В существующем стандарте не очень удобно то, что нельзя перегрузить
C++
1
... & operator [] (int i, int j);
можно пример такой перегрузки?

taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
08.12.2010, 09:11     Использование нововведений C++0x #53
Цитата Сообщение от Maxwe11 Посмотреть сообщение
можно пример такой перегрузки?
Я написал, что нельзя, а ты просишь пример? Однако!
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
08.12.2010, 09:18     Использование нововведений C++0x #54
taras atavin, протупил.. самого очень интересует такая перегрузка, в АСМе все таки все многомерные массивы есть одомерными, по крайней мере для простых типов данных
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
08.12.2010, 09:28     Использование нововведений C++0x #55
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
classs TMatrix
{
 protected:
  double *items;
  int        rows;
  int        collumns;
 public:
  TMatrix ()
  {
   rows=0;
   collumns=0;
   Items=NULL;
  }
  TMatrix (int Rows, int Collumns)
  {
   rows=Rows;
   collumns=Collumns;
   Items=new doule [Rows*Collumns];
  }
  void ReSize(int Rows, int Collumns)
  {
   rows=Rows;
   collumns=Collumns;
   if (Items)
   {
    delete [] Items;
   }
   Items=new doule [Rows*Collumns];
  }
  double & operator [] (int i, int j)
  {
   return Items[i*Collumns+j];
  }  
};
Ну ка приведите это в соответствии со стандартом!

Добавлено через 9 минут
Цитата Сообщение от Maxwe11 Посмотреть сообщение
taras atavin, протупил.. самого очень интересует такая перегрузка, в АСМе все таки все многомерные массивы есть одомерными, по крайней мере для простых типов данных
Так то асм. А на паскале многомерный массив есть синоним массива массивов. То есть, не зависимо от того, как именно он объявлен, адресовать его можно и как массив полной размерности, и как массив массивов. Причём, например, трёхмерный адресуется и как трёхмерный, и как двумерный массив одномерных массивов, и как одномерный массив двумерных массивов и как одномерный массив одномерных массивов одномерных массивов. А четырёхмерный можно адресовать:
1 как четырёхмерный массив элементов,
2 как трёхмерный массив одномерных массивов элементов,
3 как двумерный массив двумерных массивов элементов,
4 как двумерный массив одномерных массивов одномерных массивов элементов,
5 как одномерный массив трёхмерных массивов элементов,
6 как одномерный массив двумерных массивов одномерных массивов элементов,
7 как одномерный массив одномерных массивов двумерных массивов элементов,
8 как одномерный массив одномерных массивов одномерных массивов одномерных массивов элементов.
8 вариантов даже без необходимости помнить, какой именно использован в декларации. Но полная синонимичность - тоже перебор.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
08.12.2010, 11:11  [ТС]     Использование нововведений C++0x #56
taras atavin,
C++
1
2
3
4
double & operator () (int i, int j)
  {
   return Items[i*Collumns+j];
  }
Сам ведь знаешь что это один из вариантов.
А про новый стандарт ты пишешь откровенную фигню. Что показывает, что ты просто его не понимаешь, хотя будешь использовать, сам даже того не замечая (если будешь писать на плюсах).
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
08.12.2010, 11:14     Использование нововведений C++0x #57
Цитата Сообщение от ForEveR Посмотреть сообщение
double & operator () (int i, int j)
Так разве можно? И как адресовать?
C++
1
2
TMatrix m(10,10);
m(2,4)=6.4;
?

Добавлено через 1 минуту
Цитата Сообщение от ForEveR Посмотреть сообщение
Что показывает, что ты просто его не понимаешь,
Так я и пишу, что не понимаю.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
08.12.2010, 11:15  [ТС]     Использование нововведений C++0x #58
taras atavin, Ой-ли? Скомпиль ка на любой студии. Именно так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
 
class TMatrix
{
 protected:
  double *items;
  int        rows;
  int        collumns;
 public:
  TMatrix ()
  {
   rows=0;
   collumns=0;
   items=NULL;
  }
  TMatrix (int Rows, int Collumns)
  {
   rows=Rows;
   collumns=Collumns;
   items=new double [Rows*Collumns];
  }
  void ReSize(int Rows, int Collumns)
  {
   rows=Rows;
   collumns=Collumns;
   if (items)
   {
    delete [] items;
   }
   items=new double [Rows*Collumns];
  }
  double & operator () (int i, int j)
  {
   return items[i*collumns+j];
  }  
};
 
int main()
{
    TMatrix Matr(3, 3);
    Matr(2,2)=55;
    std::cout<<Matr(2,2)<<'\n';
    return 0;
 
}
Manjak
269 / 175 / 7
Регистрация: 12.03.2010
Сообщений: 494
08.12.2010, 11:15     Использование нововведений C++0x #59
Цитата Сообщение от taras atavin Посмотреть сообщение
поставь между >> пробел и скорми всё это старому компилу.

Не по теме:

Капитан?

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2010, 11:36     Использование нововведений C++0x
Еще ссылки по теме:

Использование строк.Использование структур - C++
Задачка: Дана строка,состоящая из групп нулей и едениц. Найти и вывести на экран группы с нечетным количеством символов. И еще одна: ...

Использование конструкторов. Перегрузка конструкторов. Использование свойств - C#
Помогите реализовать свойства, позволяющие осуществить проверку на допустимые значения для данных класса. using System; using...

Множественное наследование, Перегрузка функций, Перегрузка операторов, Использование дружественных функций и классов, Использование шаблонов классов - C++
Здравствуйте!!! Я бы хотел попросить помоч решить...ну или скинуть примеры таких задач, если вдруг у вас они завалялись на компе или...


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

Или воспользуйтесь поиском по форуму:
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
08.12.2010, 11:36     Использование нововведений C++0x #60
Цитата Сообщение от ForEveR Посмотреть сообщение
если будешь писать на плюсах
У меня мечта: плюнуть на все стандарты и сделать свои среду и компил под язык, похожий на c++, но с отсебятиной.

Добавлено через 20 минут
Кстати,
C++
1
2
3
4
5
double x,*y,z;
y=&z;
cin>>x;
cin>>z;
cout<<x/*y;
не работает, а
C++
1
2
3
4
5
double x,*y,z;
y=&z;
cin>>x;
cin>>z;
cout<<x/ *y;
работает. Это они тоже будут фиксить новым стандартом? А по-моему проще вручную контролировать такие неоднозначности, компилом решаемые не туда.
Yandex
Объявления
08.12.2010, 11:36     Использование нововведений C++0x
Ответ Создать тему
Опции темы

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