От меня лично:
С++11 ничего особо существенного не принес в язык. Грубо говоря, просто упростил некоторые моменты. Ведь гибкость С++ позволяет делать все(почти все: не пылесосит). Но все же, согласитесь это приятно, когда один из не самых легких языков про��раммирования становится доступнее для понимания, проще для восприятия, удобней для работы.
Перевод текста под катом. Автор John D. Cook.
Новый стандарт С++(то есть С++11) содержит немного Python'о-подобных функций, на которые я натыкался последнее время. В данной статье пойдет речь непосредственно о for-loops и raw strings.
В Python'е вы можете пройтись по списку без какого либо счетчика цикла. Например:
Нечто подобное можно использовать и в С++11:
Еще у Python'а есть raw string. Если добавить перед строкой букву R, строка интерпретируется посимвольно. Например код:
Даст следующий результат:
Hello
world
Но:
Выведет:
Hello\nworld
Потому, что \n не воспринимается как символ новой строки, а просто выводиться как два отдельных символа.
В С++11 raw string используются так же, но так же требуют разделителя внутри кавычек:
Синтаксис raw string в С++11 читать немного сложнее, чем у его коллеги Python. Преимуществом однако есть то, что такие строки могут содержать двойные кавычки, сами по себе они не прекращают строку. Например:
Выведет:
Hello «world»
В Python это не нужно, так как одинарные и двойные кавычки являются взаимозаменяемыми. Что бы получить двойные кавычки внутри строки, нужно использовать одинарные снаружи и наоборот. Так же обратите внимание, что raw string в С++11 требуют большой буквы R, в отличии от Python'a, в котором можно использовать и большую и маленькую.
Функции С++11 поддерживаются gcc 4.6.0. MinGW версию gcc для Windows можно скачать здесь. Для использования функций С++11, необходимо добавить следующий параметр в командную строку -std=c++0x.
Например:
g++ -std=c++0x hello.cpp
Visual Studio 2010 поддерживает много нового из функций С++11, но, увы, они здесь не описаны.
С++11 ничего особо существенного не принес в язык. Грубо говоря, просто упростил некоторые моменты. Ведь гибкость С++ позволяет делать все(почти все: не пылесосит). Но все же, согласитесь это приятно, когда один из не самых легких языков про��раммирования становится доступнее для понимания, проще для восприятия, удобней для работы.
Перевод текста под катом. Автор John D. Cook.
Новый стандарт С++(то есть С++11) содержит немного Python'о-подобных функций, на которые я натыкался последнее время. В данной статье пойдет речь непосредственно о for-loops и raw strings.
В Python'е вы можете пройтись по списку без какого либо счетчика цикла. Например:
for p in [2, 3, 5, 7, 11]:
print p
Нечто подобное можно использовать и в С++11:
int primes[5] = {2, 3, 5, 7, 11};
for (int &p : primes)
cout << p << "\n";
Еще у Python'а есть raw string. Если добавить перед строкой букву R, строка интерпретируется посимвольно. Например код:
print "Hello\nworld"
Даст следующий результат:
Hello
world
Но:
print R"Hello\nworld"Выведет:
Hello\nworld
Потому, что \n не воспринимается как символ новой строки, а просто выводиться как два отдельных символа.
В С++11 raw string используются так же, но так же требуют разделителя внутри кавычек:
cout << R"(Hello\nworld)";Синтаксис raw string в С++11 читать немного сложнее, чем у его коллеги Python. Преимуществом однако есть то, что такие строки могут содержать двойные кавычки, сами по себе они не прекращают строку. Например:
cout << R"(Hello "world")"; //здесь хабр немного не правильно подсвечивает синтаксисВыведет:
Hello «world»
В Python это не нужно, так как одинарные и двойные кавычки являются взаимозаменяемыми. Что бы получить двойные кавычки внутри строки, нужно использовать одинарные снаружи и наоборот. Так же обратите внимание, что raw string в С++11 требуют большой буквы R, в отличии от Python'a, в котором можно использовать и большую и маленькую.
Функции С++11 поддерживаются gcc 4.6.0. MinGW версию gcc для Windows можно скачать здесь. Для использования функций С++11, необходимо добавить следующий параметр в командную строку -std=c++0x.
Например:
g++ -std=c++0x hello.cpp
Visual Studio 2010 поддерживает много нового из функций С++11, но, увы, они здесь не описаны.
