Почему игра вектор не запускается. Vector тормозит. Низкий FPS. Лаги. Фризы. Зависает. Vector не запускается

Почему игра вектор не запускается. Vector тормозит. Низкий FPS. Лаги. Фризы. Зависает. Vector не запускается

22.03.2019

Коды ответов сервера (коды ошибок).

Относительно часто на форуме появляются топики с вопросами типа "Вижу в статистике мудятину 206, что это?" или "Что значит Partial Content в webalizer"e?". Ввиду повышенного интереса к этой теме, предлагается небольшой FAQ о кодах ошибок сервера.

Успешные запросы клиента.

Ответ сервера в диапазоне 200-299 означают, что запрос клиента обработан успешно.

200 OK - все отлично, запрос клиента обработан успешно, ответ сервера содержит затребованные данные.

201 Created (объект создан) - запрос был выполнен и в результате был создан новый ресурс. Новый созданный ресурс может быть вызван по URI (одному или нескольким), возвращенным в объекте ответа; наиболее специфический URL для ресурса отдается в поле заголовка Location. Первоначальный сервер ДОЛЖЕН создать ресурс перед возвратом кода состояния 201. Если действие не может быть выполнено немедленно, сервер должен возвратить ответ с кодом состояния 202 Accepted вместо 201.

202 Accepted (информация принята) - запрос был принят для обработки, но обработка не была завершена. В конечном счете запрос МОЖЕТ быть, а МОЖЕТ и не быть выполнен, поскольку он МОЖЕТ быть отвергнут при фактической обработке. Не имеется никакой возможности вторичной посылки кода состояния от асинхронной операции типа этой. Ответ с кодом состояния 202 преднамеренно уклончив. Цель его состоит в том, чтобы позволить серверу принять запрос для некоторого другого процесса (возможно пакетно-ориентированного процесса, который выполняется только один раз в день) и не требовать при этом, чтобы соединение агента пользователя с сервером сохранялось до завершения процесса. Объекту, возвращенному с этим ответом СЛЕДУЕТ содержать индикатор текущего состояния запроса и либо ссылку на монитор состояния, либо некоторую оценку времени, когда пользователь может ожидать завершения выполнения запроса.

203 Non-Authoritative Information (не авторская информация) - возвращенная в заголовке объекта (entity-header) метаинформация - это не оригинал, доступный на первоначальном сервере, а документ, собранный из локальных копий или копий третьей стороны. Представленный документ может быть как подмножеством оригинальной версии, так и содержать сведения, которые в ней не были представлены. Например, включение локальной аннотирующей информацию о ресурсе может расширить метаинформацию, известную первоначальному серверу. Использование этого кода состояния в ответе не является необходимым, но может применяться тогда, когда код состояния ответа отличен от 200 (OK).

204 No Content (нет содержания) - ответ содержит код состояния и заголовок, но тело содержимого отсутствует. При получении этого ответа броузер не должен обновлять свой документ. Обработчик чувствительных областей изображений может возвращать этот код, когда пользователь от не хуй делать щелкает на бесполезных или пустых участках изображения.

205 Reset Content (очистка ответа) - сервер выполнил запрос, и агенту пользователя следует отменить просмотр документа, который инициировал запрос. Этот ответ предназначен прежде всего для того, чтобы позволить ввод данных, осуществляемый пользователем, с последующей очисткой формы, в которой сделан ввод, так, чтобы пользователь мог легко инициировать следующее действие ввода. Ответ не должен содержать объект.

206 Partial Content (частичное содержимое) - сервер возвращает лишь часть данных затребованного объема. Используется в ответе на запрос с указанием заголовка Range. Сервер должен указать диапазон, включенный в ответ, в заголовке Content-Range. Вообщем выкачивают ваши порники всякими там флешгетами и прочими менеджерами закачки.

Переадресация

Код ответа сервера в диапазоне 300-399 означает, что запрос не выполнен и клиенту нужно предпринять некоторые действия для удовлетворения запроса.

300 Multiple Choices (несколько вариантов на выбор) - затребованный URL обозначает более одного ресурса. Например, URL может обозначать документ, переведенный на несколько языков. В теле содержимого, возвращенном сервером, может находиться перечень более конкретных данных о том, как выбрать ресурс правильно.

301 Moved Permanently (ресурс перемещен на постоянной основе) - затребованный URL уже не используется сервером, и указанная в запросе операция не выполнена. Новое местонахождение затребованного документа указывается в заголовке Location. Во всех последующих запросах данного документа следует указывать новый URL.

302 Moved Temporarily (ресурс временно перемещен) - затребованный URL перемешен, но лишь временно. Заголовок Location указывает на новое местонахождение. Сразу же после получения этого кода состояния клиент должен разрешить запрос при помощи нового URL, но во всех последующих запросах необходимо пользоваться старым URL.

303 See Other (смотрите другой ресурс) - затребованный URL можно найти по другому URL (указанному в заголовке Location). Его следует выбрать методом GET по данному ресурсу. Этот метод существует прежде всего для того, чтобы производить вывод данных активизированного методом POST сценария, используя перенаправление агента пользователя на указанный ресурс. Новый URI - это не ссылка, заменяющая первоначально запрошенный ресурс. Ответ с кодом состояния 303 не кэшируем, но ответ на второй (переназначенный) запрос может быть кэширован. Если новый URI - это расположение, то ответу следует содержать URL в поле Location. Если метод запроса был не HEAD, то объекту ответа следует содержать короткое гипертекстовое примечание с гиперссылкой на новый (или новые) URI.

304 Not Modified (не изменился) - это код ответа на заголовок lf-Modified-Since, если URL не изменялся с указанной даты. Тело содержимого не посылается, и клиент должен использовать свою локальную копию.

305 Use Proxy (используйте прокси-сервер) - oбращение к запрошенному ресурсу должно производиться через прокси-сервер, указанный в поле Location. В поле Location указан URL прокси-сервера. Ожидается, что получатель повторит запрос через прокси-сервер.

Неполные запросы клиента

Коды ответов в диапазоне 400-499 означают, что запрос клиента неполный. Эти коды могут также означать, что от клиента требуется дополнительная информация.

400 - Bad Request (некорректный запрос) - запрос не может быть понят сервером из-за malformed синтаксиса. Клиенту не следует повторять запрос без модификаций.

401 Unauthorized (нет разрешения) - запрос требует установления подлинности пользователя. Ответ должен включать поле заголовка WWW-Authenticate, содержащее вызов (challenge), применимый к запрошенному ресурсу. Клиент может повторить запрос с подходящим полем заголовка Authorization. Если запрос уже включает рекомендации установления подлинности (Authorization credentials) в поле Authorization, то ответ с кодом состояния 401 указывает, что в установлении подлинности этим рекомендациям отказано. Если ответ с кодом состояния 401 содержит тот же самый вызов, что и предшествующий ответ, а агент пользователя уже делал попытку установления подлинности по крайней мере один раз, то следует показать пользователю объект, который был дан в ответе, так как этот объект может включать relevant диагностическую информацию.

402 Payment Required (требуется оплата) - Этот код зарезервирован для будущего использования. В данный момент в HTTP еще не реализован.

403 Forbidden (доступ запрещен) - запрос отклонен по той причине, что сервер не хочет (или не имеет возможности) ответить клиенту.

404 Not Found (ресурс не найден) - документ по указанному URL не существует, сервер не нашел ничего, соответствующего данному запрашиваемому URI (Request-URI). Никак не сообщается является ли такое положение временным или постоянным. Если сервер не желает делать данную информацию доступной клиенту, то вместо этого кода состояния может использоваться код состояния 403 (Запрещено, Forbidden). Код состояния 410 (Удален, Gone) следует использовать, если сервер знает через некоторый внутренне конфигурируемый механизм, что старый ресурс более недоступен, но не знает нового адреса для пересылки.

405 Method Not Allowed (недопустимый метод) - этот код выдается с заголовком Allow и показывает, что метод, используемый клиентом, для данного URL не поддерживается.

406 Not Acceptable (неприемлемый запрос) - ресурс, идентифицируемый запросом, имеет возможности генерации только таких объектов ответа, которые имеют характеристики содержимого (content characteristics), не согласующиеся с заголовками приема (accept headers), представленными в запросе.

407 Proxy Authentication Required (необходима регистрация на сервере-представителе) - этот код подобен коду 401 (Несанкционированно, Unauthorized), но указывает, что клиент должен сначала установить свою подлинность (authenticate) прокси-серверу. Прокси-сервер должен возвратить поле заголовка Proxy-Authenticate, содержащее вызов (challenge), применяемый прокси-сервером для запрошенного ресурса. Клиент может повторить запрос с подходящим полем заголовка Proxy-Authorization.

408 Request Timeout (время обработки запроса истекло) - клиент не произвел запрос в течение времени, которое сервер готов ждать. Клиент может повторить запрос без модификаций позже.

409 Conflict (конфликт) - запрос не был выполнен из-за конфликта с текущим состоянием ресурса. Этот код позволяется только в ситуациях, когда ожидается, что пользователь может решить конфликт и повторно передать запрос. Телу ответа следует содержать достаточное количество информации для пользователя, чтобы он мог распознать источник конфликта. В идеале, объект ответа должен включать достаточно информации для пользователя или агента пользователя для решения проблемы; однако это может не быть возможно, да и не требуется. Конфликты, наиболее вероятно, будут возникать в ответ на запрос PUT. Если используется версификация, и объект, который должен быть помещен, включает изменения ресурса, которые находятся в противоречии со сделанными раньше каким-либо запросом (третьей стороны), сервер может использовать ответ с кодом состояния 409, чтобы показать, что он не может выполнить запрос. В этом случае, объекту ответа следует содержать список отличий двух версий в формате, определенном полем заголовка ответа Content-Type.

410 Gone (ресурса больше нет) - данный код показывает, что затребованный URL больше не существует и навсегда удален с сервера.

411 Length Required (необходимо указать длину) - сервер отказывается принимать запрос с неопределенным Content-Length. Клиент может повторить запрос, если добавит допустимое поле заголовка Content-Length, содержащее длину тела сообщения (message-body) в сообщении запроса.

412 Precondition Failed (не выполнено предварительное условие) - сервер отказывается обрабатывать запрос, потому что объект запроса больше, чем сервер желает или способен обработать. Сервер может закрыть соединение, чтобы не дать клиенту возможность продолжить запрос. Если это временное состояние, то серверу СЛЕДУЕТ включить поле заголовка Retry-After для указания времени, через которое клиент может снова повторить запрос.

413 Request Entity Too Large (запрашиваемый элемент слишком велик) - сервер не будет обрабатывать запрос, потому что его тело слишком велико.

414 Request-URI Too Long (идентификатор ресурса в запросе слишком длинный) - сервер не будет обрабатывать запрос, потому что его URL слишком длинный.

415 Unsupported Media Type (неподдерживаемый тип устройства) - сервер отказывается обслуживать запрос, потому что объект запроса находится в формате, не поддерживаемом запрошенным ресурсом для запрошенного метода.

Ошибки сервера

Коды ответов в диапазоне 500-599 показывают, что сервер столкнулся с ошибкой и, вероятно, не сможет выполнить запрос клиента.

500 Internal Server Error (внутренняя ошибка сервера) - при обработке запроса на сервере один из его компонентов (например, CGI-программа) выдал аварийный отказ или столкнулся с ошибкой конфигурации.

501 Not Implemented (функция не реализована) - клиент запросил выполнение действия, которое сервер выполнить не может, сервер не поддерживает функциональные возможности, требуемые для выполнения запроса. Этот ответ соответствует состоянию, когда сервер не распознает метод запроса и не способен обеспечитиь его для любого ресурса.

502 Bad Gateway (дефект шлюза) - сервер, действуя в качестве шлюза или прокси-сервера, получил недопустимый ответ от следующего сервера в цепочке запросов, к которому обратился при попытке выполнить запрос.

503 Service Unavailable (служба недоступна) - данный код означает, что данная служба временно недоступна, но в будущем доступ к ней будет восстановлен. Если сервер знает, когда это произойдет, может быть также выдан заголовок Retry-After.

504 Gateway Timeout (время прохождения через шлюз истекло) - этот ответ похож на 408 (Request Time-out) , за исключением того, что шлюз или уполномоченный сервер превысил лимит времени.

505 HTTP Version Not Supported (неподдерживаемая версия HTTP) - сервер не поддерживает версию протокола HTTP, использованную в запросе.

Для составления использовались материалы со все-различных сайтов (rtfm.vn.ua, w3.org и пр.)

У векторной графики много преимуществ. В отличие от растровых, векторные изображения более гибкие, легко масштабируются, сохраняют качество и т.д. Ниже представлена подборка веб-ресурсов с бесплатными векторными иконками, символами и картинками.

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

На сайте для бесплатного скачивания доступно приблизительно 190,000 образцов векторной графики (для некоммерческого использования). Искать можно по 15 доступным признаками или по наиболее популярному, новому.

Огромный «дом» векторной графики, изображений и всевозможных паттернов. Помимо бесплатных, есть доступные наборы только премиум-пользователям.

Сайт для поиска фирменных логотипов, брендов, эмблем в векторе. Изображения можно использовать в соответствии с лицензией Creative Commons , которая представляет право изменять их и выкладывать на другие ресурсы (но с ссылкой на источник).

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

На этом веб-сайта выложено более чем 30 категорий векторных изображений, которые можно бесплатно скачать.

Vector4Free.com предлагает свободную векторную графику в форматах: Illustrator AI, EPS, PDF, SVG и Corel Draw CDR.

Этот веб-сайт раздает векторную графику от других источников. Пользователи могут оценивать качество изображений.

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

На этом ресурсе находятся высококачественные, бесплатные векторные наборы/пакеты.

На веб-сайте размещается небольшая коллекция векторных «обоев» на любой вкус.

Свободные векторы с отсылкой к источнику.

Веб-ресурс предлагает различные бесплатные векторные изображения и элементы по категориях: фоны, иллюстрации, фреймы, орнамент, границы, открытки, шаблоны, логотипы.

Веб-ресурс содержит бесплатную креативную графику в векторе.

Векторные изображения мировых карт.

Хранилище интересных векторных изображений.

На Vectors4all собраны неплохие векторные картинки, которые можно свободно загружать и использовать.

У этого веб-сайта есть приблизительно 50 разных категорий векторной графики, включая фоны и шаблоны.

На этом сайте можно найти векторную картинку по ключевому слову.

На ресурсе собраны всевозможные виды векторной графики для дизайнера.

Ресурс с бесплатными векторными иконками, символами, картинками разных категорий.

На этом ресурсе есть 20 различных категорий дизайна.

У Freevectors есть 14 различных категорий с 1600 + векторных картинок.

Вниманию дизайнеров представлено более 20 категорий векторной графики.

На этом сайте можно найти самые разные векторные элементы - от Животных до Транспортных средств. Коллекция постоянно обновляется.

27. Digimadmedia

На сайте есть восемь групп подкатегорий, где можно найти векторные фоны, эмблемы, символы, цветы и даже заставки на Хэллоуин.

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

Этот сайт является продуктом Freepik. Тут собраны замечательные иконки в векторе, которые предоставляются бесплатно, но с лицензией CC 3.0.

DeviantArt - известное сообщество художников со всего земного шара. Тут можно найти много интересного и полезного не только по векторной графике.

Если вы столкнулись с тем, что Vector тормозит, вылетает, Vector не запускается, Vector не устанавливается, в Vector не работает управление, нет звука, выскакивают ошибки, в Vector не работают сохранения – предлагаем вам самые распространенные способы решения данных проблем.

Первое – проверьте, соответствуют ли характеристики вашего ПК минимальным системным требованиям:

  • ОС: Windows XP/Vista/7/8
  • Процессор: 2 ГГц
  • Память: 2 Гб
  • HDD: 100 Мб
  • DirectX: 9.0c

Обязательно обновите драйвера видеокарты и другое ПО

Перед тем, как вспоминать самые нехорошие слова и высказывать их в сторону разработчиков, не забудьте отправиться на официальный сайт производителя своей видеокарты и скачать самые свежие драйвера. Зачастую, к релизу игр готовятся специально оптимизированные для них драйвера. Также можно попробовать установить более позднюю версию драйверов, если проблема не решается установкой текущей версии.

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

Не забывайте, что для стабильной работы игр часто требуется установка последней версии DirectX, которую всегда можно скачать с официального сайта Microsoft .

Vector не запускается

Многие проблемы с запуском игр случаются по причине некорректной установки. Проверьте, не было ли ошибок во время установки, попробуйте удалить игру и запустить установщик снова, предварительно отключив антивирус – часто нужные для работы игры файлы по ошибке удаляются. Также важно помнить, что в пути до папки с установленной игрой не должно быть знаков кириллицы – используйте для названий каталогов только буквы латиницы и цифры.

Еще не помешает проверить, хватает ли места на HDD для установки. Можно попытаться запустить игру от имени Администратора в режиме совместимости с разными версиями Windows.

Vector тормозит. Низкий FPS. Лаги. Фризы. Зависает

Первое – установите свежие драйвера на видеокарту, от этого FPS в игре может значительно подняться. Также проверьте загруженность компьютера в диспетчере задач (открывается нажатием CTRL+SHIFT+ESCAPE). Если перед запуском игры вы видите, что какой-то процесс потребляет слишком много ресурсов – выключите его программу или просто завершите этот процесс из диспетчера задач.

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

Vector вылетает на рабочий стол

Если Vector у вас часто вылетает на рабочий слот, попробуйте начать решение проблемы со снижения качества графики. Вполне возможно, что вашему компьютеру просто не хватает производительности и игра не может работать корректно. Также стоит проверить обновления – большинство современных игр имеют систему автоматической установки новых патчей. Проверьте, не отключена ли эта опция в настройках.

Черный экран в Vector

Чаще всего проблема с черным экраном заключается в проблеме с графическим процессором. Проверьте, удовлетворяет ли ваша видеокарта минимальным требованиям и поставьте свежую версию драйверов. Иногда черный экран является следствием недостаточной производительности CPU.

Если с железом все нормально, и оно удовлетворяет минимальным требованиям – попробуйте переключиться на другое окно (ALT+TAB), а потом вернуться к окну игры.

Vector не устанавливается. Зависла установка

Прежде всего проверьте, хватает ли у вас места на HDD для установки. Помните, что для корректной работы программы установки требуется заявленный объем места, плюс 1-2 гигабайта свободного пространства на системном диске. Вообще, запомните правило – на системном диске всегда должно быть хотя бы 2 гигабайта свободного места для временных файлов. Иначе как игры, так и программы, могут работать не корректно или вообще откажутся запуститься.

Проблемы с установкой также могут произойти из-за отсутствия подключения к интернету или его нестабильной работы. Также не забудьте приостановить работу антивируса на время установки игры – иногда он мешает корректному копированию файлов или удаляет их по ошибке, считая вирусами.

В Vector не работают сохранения

По аналогии с прошлым решением проверьте наличие свободного места на HDD – как на том, где установлена игра, так и на системном диске. Часто файлы сохранений хранятся в папке документов, которая расположена отдельно от самой игры.

В Vector не работает управление

Иногда управление в игре не работает из-за одновременного подключения нескольких устройств ввода. Попробуйте отключить геймпад или, если по какой-то причине у вас подключено две клавиатуры или мыши, оставьте только одну пару устройств. Если у вас не работает геймпад, то помните – официально игры поддерживают только контроллеры, определяющиеся как джойстики Xbox. Если ваш контроллер определяется иначе – попробуйте воспользоваться программами, эмулирующими джойстики Xbox (например, x360ce).

Не работает звук в Vector

Проверьте, работает ли звук в других программах. После этого проверьте, не отключен ли звук в настройках самой игры и выбрано ли там устройство воспроизведения звука, к которому подключены ваши колонки или гарнитура. Далее следует во время работы игры открыть микшер и проверить, не отключен ли звук там.

Если используете внешнюю звуковую карту – проверьте наличие новых драйверов на сайте производителя.

Плагин работает только под windows. | This plugin works only in Windows.
Поддерживается Иллюстратор от CS6 и новее. | For Adobe Illustrator CS6 and newer.

This is a crowdfunding project. Your donations will help us finish the current plug-in release and support it in the future. You can donate small amounts of $10-30 via Skrill or Payoneer: [email protected]
If you represent a design studio, I offer to donate $ 50-100.
In the comment to the payment please write your actual email and specify "Donation for the V.I.P. plug-in. My email …".
Please contact us if you have any question [email protected].

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

Плагин работает «на лету». Т.е. не нужно ничего нажимать, проверка идёт быстро, в реальном времени. Если у вас сложный вектор, и плагин не вовремя начинает дополнительно тормозить Иллюстратор, то просто сверните или переключитесь с его панели, чтобы она была не видна. Плагин перестанет проверять, пока вы снова не откроете его панельку.

Обзор VIP (не последней версии) на vectorboom

Финансирование

Ведется приём средств. Присоединяйтесь!
Разработка плагина ведётся на деньги стокеров по схеме краудфандинга. Т.е. без пожертвований мы не сможем выпускать сборки для новых версий Иллюстратора, исправлять найденные ошибки или что-то дорабатывать.
Cкидываемся по $10-30 на Skrill или Payoneer [email protected]
Десятки вполне достаточно. Тридцать - для щедрых до расточительности 8).
Если у вас студия, то предлагаю скидываться по $50-100, в зависимости от размеров студии. Это будет честно.
В комментарии к платежу пишите актуальную электронную почту и что это пожертвование на плагин, например, «Пожертвование на разработку плагина. Связаться можно по [email protected]».
Деньги пойдут не на бутерброд с икрой, а на дело.

Название

Автор идеи и оригинальной реализации Vector Inspector Ник Кинни (Nick Kinney) больше не занимается стоками. И поддерживать старый плагин не планирует. Он рад, что мы возродили его идею на новом уровне и разрешил основываться на оригинальном названии. Мне кажется, что название очень удачное: запоминающееся и ясно отражающее суть. Поэтому мы с удовольствием будем его использовать.

Установка

Закидывайте файл прямо в папку плагинов Иллюстратора (папка Adobe Illustrator → Plug-ins или Внешние модули),
Например, C:\Program Files\Adobe\Adobe Illustrator CC 2014\Plug-ins\
Перезапускайте Иллюстратор и включайте отображение плагина в меню Иллюстратора Window → Vector Inspector Pro

В архиве находится несколько версий. Выбирайте версию для своего Иллюстратора:

Ограничения

* Плагин работает только под windows. Спрос на mac-версию в русскоязычном сегменте очень низок. Думаю, что мы не сможем собрать нужное количество денег на реализацию.
* Плагин не определяет и не исправляет сложные объекты Иллюстратора, такие как составные фигуры, паттерны и растры в масках прозрачности или «живые» заливки. (Если вы не представляете, что это такое, значит вы их не используете. А если представляете, то следите самостоятельно.)
* Плагин не работает с мультиартбордом (т.е. с несколькими монтажными областями), поскольку файлы с несколькими артбордами стоки не принимают.

Альтернативы

Если у вас не работает VIP, можно попробовать

    Возврат итератора требует фактического хранения вектора после завершения работы. Т.е. либо вектор должен быть статичным (объявлен с ключевым словом static), либо как член класса, а возвращать его будет метод, либо получен на вход функции ещё откуда-либо.

    С одним лишь итератором многого не сделать: неизвестно, например, сколько ещё элементов после текущего итератора можно прочитать (для этого придётся возвращать пару итераторов, итератор и длину остатка или что-то подобное), нельзя вставить новый элемент или удалить существующий. С другой стороны, итератор концептуально представляет собою позицию в контейнере (плюс вариант отсутствия когда итератор указывает на end).

    Итого: если вам нужна именно семантика указателя на позицию в контейнере, итератор вам подойдёт. В остальных случаях ничего хорошего не выйдет.

    Возврат указателя можно разделить на 2 случая: с передачей владения и без (т.е. определить, кто занимается удалением вектора).

    • Если владение не передаётся, остаются всё те же требования к времени жизни рассматриваемого вектора, как и в предыдущем пункте. В таком случае можно также вернуть ссылку на вектор - подходы будут эквивалентны.

      Class Node { std::vector children_; // ... public: // ... const std::vector& getChildren() const { return children_; // ОК: возвращаемый вектор имеет такое же время жизни, как // и объект, с которым мы работаем } }

      Если нужно передать владение вектором вызывающему контексту, следует изначально создавать его на куче (с помощью оператора new). С точки зрения идиоматичного C++ следует использовать умные указатели shared_ptr , unique_ptr или их аналоги из библиотек вроде boost или Qt .

      Std::shared_ptr> getNumbers(int n) { auto res = make_shared>(n); // ... return res; }

      Следует заметить, что в C++11 такой подход довольно бессмыслен, поскольку там существует семантика перемещения (об этом позже). С другой стороны, shared_ptr доступен и в C++03 с TR1 . Правда, он может быть не совсем эквивалентен своему собрату из 11 стандарта.

    Возврат по значению может вылиться в дорогостоящее копирование, однако:

    • В C++11 (который на текущий момент с нами уже 4 года, между прочим) существует семантика перемещения, которая позволит вернуть вектор по значению без копирования.

      Даже для более старых стандартов многие компиляторы реализуют оптимизации Return Value Optimization и Named Return Value Optimization (подробнее о этих товарищах можно почитать у Алёны C++). Несмотря на то, что большинство компиляторов поддерживают эти оптимизации, могут существовать экзотические / старые компиляторы, не проводящие их.

      Следует отметить, что эта оптимизация не всегда срабатывает. Один из таких случаев - когда возвращаемый результат зависит от пути исполнения, например

      Std::string toString(bool flag) { std::string a("True"); std::string b("False"); return flag ? a: b; }



© 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows