![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Добрый день.
Задался вопросом: а можно ли сделать forward declaration для vector или deque Пробовал так:
получаю ошибку:
Можно ли это сделать вообще ? Спасибо. P.S. Думаю, из сообщения об ошибке ясно какой компилятор ![]() Это сообщение отредактировал(а) borisbn - 12.8.2011, 12:59 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
borisbn
Если вы имели ввиду forwarding declaration, то можно так template<class T, class A> class vector; Но это по стандарту не переносимо. Дальше мысль не буду развивать, так как возможно не понял вашего вопроса - что вы подразумевали под "forwarding". |
|||
|
||||
borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Да, его (или её?). Поправил. Так, как Вы сказали пробовал. При объявлении ф-ции
, использующую vector получаю другую ошибку
и ещё кучу букаф. А объявлять в параметрах ф-ции вектор с аллокатором ну оооооооочень не хочется -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
borisbn, да сорри.
Но в любом случае, даже если вы введете алокатор, это не будет хорошим решением. Насколько помню, в стандарте не оговаривается сколько аргументов по умолчанию в шаблоне может быть. То есть вполне вилидна реализация вектора, например такая:
знатоки стандарта попровят, если что... ![]() |
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
Возник вопрос, а зачем? Если вы хотите уменьшить время компиляции, то включите <vector> в "stdafx.h"
Заголовки, включенные туда, по умолчанию будут скомпилирован заранее. Это заметно увеличивает скорость компиляции больших проектов. зы: правильное название "forward declaration" |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
1. Уменьшить время компиляции (про stdafx см. ниже) 2. Унифицировать стиль. А то получается, что всё, что можно объявить предварительно - я объявляю, а std-классы - включаю h-ник. 3. Уже просто из принципа интересно (академический вопрос) ![]() По поводу stdafx: 1. У меня проект создаёт VS Qt Integrator, и он делает Not Using Precompiled Headers 2. Это как-то некроссплатформенно... хотя... может у gcc есть Precompiled Headers ? Надо выяснить агхрррр. поправил -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
Artemon |
|
|||
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: 1 Всего: 20 |
Как можно увеличить скорость компиляции, если файл vector.h не изменяется (или вы его редактируете ?).
-------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Если не включен Precompiled Headers, то при изменении моего исходника, в который включен vector.h, последний будет перекомпилироваться. я из ума ещё не выжил ![]() -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
Artemon |
|
|||
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: 1 Всего: 20 |
У меня всегда стоит опция: "Not using precompiled headers" и перекомпиляция идет только измененных файлов и всех зависимых файлов.
VS2005 + Qt 4.4.3 Добавлено через 7 минут и 32 секунды И еще не совсем понял про vector, в программу вы ведь включаете всеголишь заголовочный файл, а не исходник, поэтому что тут может перекомпилироваться ? Это сообщение отредактировал(а) Artemon - 12.8.2011, 14:59 -------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
угу. зы так и не понял для чего это нужно.. стандартные хидеры, в сравнении с тем же к примеру boost.fusion - просто микрохидеры. никогда не замечал чтоб что-то медленно компилировалось из-за включения в проект:
по этому, наверное интерес чисто академический. |
|||
|
||||
borisbn |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
vector ведь шаблонный... у него нет исходника. только заголовочный и есть, а т.к. он включается в мой заголовочный файл, то при изменении моего исходника, включающего мой заголовочный файл, перекомпилироваться будут все три файла (мой cpp, мой h, vector.h)
академический то, академический, но если мне понадобится то же самое сделать не с std-шными классами а с теми же boost'овскими ? да и просто интересно уже - возможно ли ... Это сообщение отредактировал(а) borisbn - 12.8.2011, 15:20 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||||
|
|||||||
Artemon |
|
|||
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: 1 Всего: 20 |
-------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
никогда не задавался таким вопросом. повторюсь: смысла таки не вижу... ну сэкономишь ты 1мс на единице трансляции. и? ![]() Это сообщение отредактировал(а) boostcoder - 12.8.2011, 16:03 |
|||
|
||||
spyswamp |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 349 Регистрация: 18.8.2006 Репутация: 1 Всего: 7 |
borisbn, http://stackoverflow.com/questions/307343/...n-stl-container читал?
Добавлено через 2 минуты и 19 секунд А вот тут еще нехило поизвращались: http://stackoverflow.com/questions/555330/...ce-compile-time Кстати, в этом плане разработчики boost большие молодцы, т.к. замутили свои хидеры с forward declaration'ом. ;) -------------------- - why you call it beta? - cuz it's betta then nothin' |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Нет. Как раз собирался туда писать... Спасибо ! Интересно (правда не сама сошка, а ссылка на groups.google и дальнейшая на open-std.org). Получается (как и говорил volatile), что по стандарту я не застрахован от того, что какая-нить имплементация vector'а не будет иметь доп. параметров. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |