1 / 1 / 3
Регистрация: 28.01.2013
Сообщений: 169
|
||||||
1 | ||||||
Неизвестная функция. Книга. Страуструп24.07.2013, 04:44. Показов 1738. Ответов 14
Метки нет (Все метки)
Я видел похожу тему, но толком ответа не нашел. Сразу к делу. Есть функция get_token(). Она не из стандартной библиотеки, т.е. её нужно написать. Как я понял из коментов в его коде, то она должна считывать объекты класса Token из потока cin . Этой функции нет. Я не знаю что Страуструп хотел этим сказать, но не могли бы вы мне показать тело функции, которая должна считывать объекты класса Token из потока cin? Вот мой код:
0
|
24.07.2013, 04:44 | |
Ответы с готовыми решениями:
14
Книга после Бьярне Страуструп Книга Страуструп Программирование Принципы и практика Неизвестная функция неизвестная функция |
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
|
||||||
24.07.2013, 05:26 | 2 | |||||
Наверное он имел в виду считать несколько объектов Token из потока и вернуть вектор.
http://ideone.com/RqKzMT
0
|
1 / 1 / 3
Регистрация: 28.01.2013
Сообщений: 169
|
|
24.07.2013, 06:29 [ТС] | 3 |
У меня вопрос по двум строчкам:
1) tokens.emplace_back(c, x); - что делает функция emplace_back() и чем она отличается от push_back()? 2) auto tokens = get_tokens(); - что такое auto и зачем оно?
0
|
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
|
|
24.07.2013, 07:04 | 4 |
1)
emplace_back форвардит переданные аргументы (char, double) конструктору Token создавая обьект в конце вектора. push_back создает копию переданного обьекта(const Token&) в конце вектора. Разницы в производительности, благодаря семантике перемещения, вообще никакой. push_back( Token(c,x) ) тоже самое, что push_back( {c,x} ) и тоже самое, что emplace_back({c,x}) тоже самое, что emplace_back( Token(c,x) ). Эти 4 варианта используют перемещающий конструктор класса Token (и аналогично аргументы конструктора, если они временные обьекты) для смены владельца. Но emplace_back(c,x) использует перемещающие конструкторы переданных аргументов (если переданный аргумент - временный, в противном случае - копирующий) для перемещения их в конструктор Token. И на том месте конструируется обект Token. Вообще, не вникайте пока что. Юзайте push_back({}) 2) auto подставляет необходимый тип переменной. Погуглите. Там на 5 мин
2
|
1 / 1 / 3
Регистрация: 28.01.2013
Сообщений: 169
|
|
24.07.2013, 15:59 [ТС] | 5 |
На счет auto: он помогает автоматом определять тип переменной при инициализации, да?
0
|
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
|
||||||
24.07.2013, 16:00 | 6 | |||||
ququ_smile, да, именно при инициализации.
Например, вот такое недопустимо:
0
|
1 / 1 / 3
Регистрация: 28.01.2013
Сообщений: 169
|
|
24.07.2013, 20:08 [ТС] | 7 |
А обязательно было писать auto? Нельзя написать std::vector <Token> tokens = get_tokens() ?
Добавлено через 19 минут Да и почему-то когда я пишу auto token; мне компилятор выдает, мол у token нет идентефикатора типа
0
|
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
|
|
24.07.2013, 20:14 | 8 |
можно писать и так. просто с auto получается короче)
скорее всего нет поддержки C++11
0
|
1 / 1 / 3
Регистрация: 28.01.2013
Сообщений: 169
|
|||||||||||
24.07.2013, 20:23 [ТС] | 9 | ||||||||||
еще один вопрос: вот у меня есть класс
Token :
0
|
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
|
||||||
24.07.2013, 20:24 | 10 | |||||
0
|
ququ_smile
|
24.07.2013, 20:38
[ТС]
#11
|
Не по теме: Мир - боль
0
|
17 / 15 / 0
Регистрация: 05.07.2013
Сообщений: 27
|
||||||
24.07.2013, 21:05 | 12 | |||||
Читайте книгу внимательней. Там все есть.
Скопировал, но не гарантирую, что поможет Вам:
1
|
1 / 1 / 3
Регистрация: 28.01.2013
Сообщений: 169
|
|
25.07.2013, 00:20 [ТС] | 13 |
До момента первого использования этой функции, того что вы написали нет... Я проверял несколько раз. Но спасибо, мне это очень помогло.
0
|
25.07.2013, 02:11 | 14 | |||||
Вообще-то auto это по стандарту спецификатор класса памяти.
То есть чтобы объявить локальную переменную в функции main можно писать
0
|
Ghost
174 / 174 / 40
Регистрация: 16.09.2012
Сообщений: 526
|
||||||||||||||||
25.07.2013, 02:27 | 15 | |||||||||||||||
Под auto подразумевался спецификатор хранения переменной. То есть, auto находился в одном ряду с register, static, extern, и указывал на то, что переменная имеет локальное время жизни. Об этом почти не знают начинающие, так как любая переменная объявленная в некотором блоке неявно определяется как auto.
Например, следующие два объявления абсолютно идентичны:
0
|
25.07.2013, 02:27 | |
25.07.2013, 02:27 | |
Помогаю со студенческими работами здесь
15
Функция CM_Request_Device_Eject из SETUPAPI.dll. Ошибка - неизвестная функция. Неизвестная функция Неизвестная функция Неизвестная функция Eval в выражении Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |