170 похожих чатов

Добрый вечер, возможно вопрос глупый, но... std::vector<int> Array = new std::vector<int>(); почему

данная запись не правильная?
Вектор это же объект, а не примитивный тип, почему не нужно применять оператор new std::vector<int>();?

10 ответов

7 просмотров

Потому что C++ не Java

Алан-Вербило Автор вопроса
Sergey Skvortsov
Потому что C++ не Java

да я не из Java пришел, я из си шарпа👀

new возвращает указатель, а вы пытаетесь проинициализировать им вектор выделяйте вектор на стеке и все — у него внутри свой new, чтобы выделить память под данные. на стеке только control block, так сказать (если не считать SSO-подобное поведение)

Алан-Вербило Автор вопроса
Vlad
new возвращает указатель, а вы пытаетесь проинициа...

а оператор new всегда возвращает не объект, а указатель на объект?

Алан-Вербило Автор вопроса
Vlad
да

спасибо за ответ. А если я создам не переменную Array, а указатель и все технически заработает.... Что я получу по факту? лишний код?

Алан Вербило
спасибо за ответ. А если я создам не переменную A...

получите лишнюю аллокацию и необходимость работать с указателем вместо нормального объекта, в том числе необходимость не забыть этот вектор удалить

Алан-Вербило Автор вопроса
Vlad
получите лишнюю аллокацию и необходимость работать...

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

Алан Вербило
если я вас правильно понял, то при небольших масси...

нет, потому что вектор и так динамически выделяет память для данных

Алан Вербило
если я вас правильно понял, то при небольших масси...

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

Похожие вопросы

Обсуждают сегодня

А чем вам питонисты не угодили?😂
.
79
Язык Си можно выучить за день? По книжке ANSI C на 230 страниц
Vincent Vegan
29
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
22
Dim Dim, [02.07.2024 11:07] DB 0x62 Dim Dim, [02.07.2024 11:07] DB 0x66 Dim Dim, [02.07.2024 11:07] кто пояснит что это?
Dim Dim
14
Ошибка: segmentation fault (core dumped) Код: pastebin.com/BEsNNSSV Сообщение от компилятора: отсутствует ОС: Arch Linux Ядро: x86_64 Linux 6.9.7-arch1-1 Процессор: Intel Cele...
sec
4
Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Ребят, а за скок можно впарить анон чат с апишкой и веб админкой ?
Eugene Неелов
15
Кстати, я тут еще с одной темой столкнулся, вот учу я C++, на таком то ресурсе, а остальные постоянно советуют практиковаться, что то писать, проекты, но как писать если вот т...
aaswq1
7
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
Карта сайта