0 / 0 / 0
Регистрация: 15.02.2025
Сообщений: 7
1

Является ли vector примером динамического массива?

17.02.2025, 19:33. Показов 4550. Ответов 72
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Является ли vector примером динамического массива? Вопрос может звучать странно и я вижу в нем однозначный ответ, что вектор все таки является примером динамического массива, но все равно, хотелось бы убедиться, потому что мнения в интернете расходятся (Готовлюсь к зачету в унике, вопросы по теории это бред, из-за формулировки некоторых нельзя дать однозначный ответ, поэтому не бейте палками)

В каких строках приведен пример динамического массива?
C++
1
2
3
4
int* arr = new int [M]{ 0 };
 vector <double> vec= {1.4, 2.0, 3.9, 4.1};
 char arr[4]{ 'k', 'b', 'c', '_' };
 char* vec = new int[6];
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.02.2025, 19:33
Ответы с готовыми решениями:

Является ли такое решение задачи примером динамического программирования?
Задали такую задачку: У вас есть несколько камней известного веса W1, …, Wn. Напишите программу, которая распределит камни в две кучи...

Что является причиной ошибки после завершения всех операций? (динамический массив)
Что является причиной ошибки после завершения всех операций? (динамический массив) #include &lt;iostream&gt; #include...

Собственный динамический массив (аналог std::vector)
Вот возникла идея написать что-то на подобии вектора, но возникла проблема что не так с kallocSize? Почему компилятор ее не пропускает? А...

72
Злостный нарушитель
 Аватар для Verevkin
9795 / 5337 / 1212
Регистрация: 12.03.2015
Сообщений: 25,040
17.02.2025, 20:04 2
Это класс-обёртка над динамическим массивом, раз у него есть член data(), возвращающий указатель на начальный элемент.
З.Ы. Задай свой вопрос какой-нибудь негросети. Это щас модно. Результат нам покаж.
0
17.02.2025, 20:07 3

Не по теме:

Цитата Сообщение от nkrdd Посмотреть сообщение
динамического массива
сейчас придут эксперты и будут рассказывать, что в С++ нет динамических массивов, хотя они всё прекрасно понимают, о чем речь, только нужно же самоутвердиться)

0
0 / 0 / 0
Регистрация: 15.02.2025
Сообщений: 7
17.02.2025, 20:08  [ТС] 4
Цитата Сообщение от Verevkin Посмотреть сообщение
Задай свой вопрос какой-нибудь негросети. Это щас модно. Результат нам покаж.
Ну сетка говорит, что является, но хотелось бы услышать мнение профессионалов К сетке доверия нет
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
4496 / 2366 / 985
Регистрация: 01.06.2021
Сообщений: 8,137
17.02.2025, 20:08 5
Цитата Сообщение от nkrdd Посмотреть сообщение
потому что мнения в интернете расходятся
процитируй несколько мнений, ты заинтриговал
0
 Аватар для Pphantom
1783 / 1244 / 619
Регистрация: 17.03.2022
Сообщений: 3,949
17.02.2025, 20:11 6
Цитата Сообщение от nkrdd Посмотреть сообщение
Готовлюсь к зачету в унике, вопросы по теории это бред, из-за формулировки некоторых нельзя дать однозначный ответ, поэтому не бейте палками
В таких ситуациях обычно бессмысленно узнавать "правильный ответ". Единственное, что вам на самом деле нужно:
1) выяснить, какой ответ считает правильным преподаватель;
2) узнать, как перевестись из такого учебного заведения в более приличное.
1
Злостный нарушитель
 Аватар для Verevkin
9795 / 5337 / 1212
Регистрация: 12.03.2015
Сообщений: 25,040
17.02.2025, 20:12 7
Цитата Сообщение от Royal_X Посмотреть сообщение
сейчас придут эксперты и будут рассказывать, что в С++ нет динамических массивов, хотя они всё прекрасно понимают, о чем речь, только нужно же самоутвердиться)
Мне пох. Я в С++ не шарю.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <vector>
int main()
{
  std::vector<double> vec = {1.4, 2.0, 3.9, 4.1};
  
  // по итератору
  for (auto &x : vec) std::printf("%g ", x);
  std::cout << std::endl;
  
  // по указателю
  auto count = vec.size();
  for (auto p = vec.data(); count--; p++)
    std::printf("%g%s", *p, count ? " " : "\n");
  
  return 0;
}
1
0 / 0 / 0
Регистрация: 15.02.2025
Сообщений: 7
17.02.2025, 20:13  [ТС] 8
Цитата Сообщение от Royal_X Посмотреть сообщение
процитируй несколько мнений,
Чуть просчитался, не нашел, но в моей голове было то, что я точно где то находил что вектор != дин массив, sry
0
Модератор
Эксперт С++
 Аватар для zss
13735 / 10931 / 6483
Регистрация: 18.12.2011
Сообщений: 29,172
17.02.2025, 20:14 9
Цитата Сообщение от nkrdd Посмотреть сообщение
Является ли vector примером динамического массива?
Этот вопрос сродни вопросу "Является ли автомобиль двигателем внутреннего сгорания?"
Т.е. двигатель внутреннего сгорания - это часть автомобиля.
Аналогично: динамический массив - это часть объекта vector.
2
0 / 0 / 0
Регистрация: 15.02.2025
Сообщений: 7
17.02.2025, 20:14  [ТС] 10
Цитата Сообщение от Pphantom Посмотреть сообщение
2) узнать, как перевестись из такого учебного заведения в более приличное.
Мне нравится, это просто препод рейд босс, ну либо я просто осёл и немного не вкуриваю
0
Злостный нарушитель
 Аватар для Verevkin
9795 / 5337 / 1212
Регистрация: 12.03.2015
Сообщений: 25,040
17.02.2025, 20:18 11
Цитата Сообщение от nkrdd Посмотреть сообщение
препод рейд босс, ну либо я просто осёл и за теорию немного не вкуриваю
Ты дай преподу ссылку на этот тред, мы проведём среди него разъяснительную работу, штоб он рос над собой.

Добавлено через 1 минуту
Цитата Сообщение от zss Посмотреть сообщение
Этот вопрос сродни вопросу "Является ли автомобиль двигателем внутреннего сгорания?"
Достойная аналогия.
2
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
4496 / 2366 / 985
Регистрация: 01.06.2021
Сообщений: 8,137
17.02.2025, 20:21 12
Цитата Сообщение от nkrdd Посмотреть сообщение
что я точно где то находил что вектор != дин массив
std::vector is a sequence container that encapsulates dynamic size arrays
что-то такое и в 23.3.11.1
Т.е. это не массив, а контейнер. Ведь, вектор инкапсулирует не только массивы, но и содержит размер и вместимость.

На эти вопросы лучше ответит каллиграфер. Но чтобы он начал отвечать, нужен стимул. Например, я вот напишу:

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

nkrdd, теперь, я думаю, он придет в эту тему)))
0
Злостный нарушитель
 Аватар для Verevkin
9795 / 5337 / 1212
Регистрация: 12.03.2015
Сообщений: 25,040
17.02.2025, 20:26 13
Цитата Сообщение от Royal_X Посмотреть сообщение
На эти вопросы лучше ответит каллиграфер. Но чтобы он начал отвечать, нужен стимул. Например, я вот напишу:
вектор это массив по семантике, массив с динамическим выделением памяти
Ну ты прям с козырей зашёл!!
1
 Аватар для SmallEvil
3791 / 2717 / 765
Регистрация: 29.06.2020
Сообщений: 9,991
17.02.2025, 20:39 14
Цитата Сообщение от nkrdd Посмотреть сообщение
В каких строках приведен пример динамического массива?
1 и 4
vector это - класс предоставляющий поведение расширяемого массива. Но таковым не является.

Динамическим массивом называется массив место для которого выделено в куче.
В с++ с помощью оператора new[] выделяется непрерывный участок памяти из последовательно следующих друг за другом объектов типа используемого при вызове оператора.
Результатом является указатель на его первый элемент.

Пример создания динамических массивов в С++:
C++
1
2
3
4
5
6
7
8
   const int N = 5;
 
   using IntD1 = int[N];
   using IntD2 = IntD1[N];
   
   int    * p_first_elem_IntD1 = new IntD1;
   IntD1  * p_first_elem_IntD2 = new IntD2;
}
Добавлено через 5 минут

Не по теме:

Цитата Сообщение от Royal_X Посмотреть сообщение
сейчас придут эксперты и будут рассказывать, что в С++ нет динамических массивов, хотя они всё прекрасно понимают, о чем речь, только нужно же самоутвердиться)
По определению - нет таковых.

0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
4496 / 2366 / 985
Регистрация: 01.06.2021
Сообщений: 8,137
17.02.2025, 20:43 15
nkrdd, вообще, классификация контейнеров довольно запутанная https://en.cppreference.com/w/... #Container

И, на мой взгляд, преподы, вместо того, чтобы гнаться за терминами, лучше бы объяснили, какой sequence контейнер использовать в том или ином случае

Является ли vector примером динамического массива?


Например, это таблица показывает преимущества и недостатки разных sequence container.

Есть еще в конце этой страницы https://en.cppreference.com/w/cpp/container хорошая таблица Function table (по сути, две таблицы), которая может быть полезна при выборе того или иного контейнера для конкретной задачи.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
4496 / 2366 / 985
Регистрация: 01.06.2021
Сообщений: 8,137
17.02.2025, 20:50 16
Цитата Сообщение от SmallEvil Посмотреть сообщение
1 и 4
если мне попалось бы такое задание, то я тоже выбрал бы только эти два варианта

nkrdd, а вот
2 - это контейнер
3 - "статический" массив
0
86 / 60 / 12
Регистрация: 06.06.2013
Сообщений: 216
17.02.2025, 20:54 17
Цитата Сообщение от Royal_X Посмотреть сообщение
хорошая таблица
Со всякими страшными О
Миниатюры
Является ли vector примером динамического массива?  
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
17.02.2025, 20:55 18
Цитата Сообщение от zss Посмотреть сообщение
vector.
аналогия про двигатель и автомобиль так себе, двигатель и автомобиль выполняют разные функции ( имеют разные типы ( классы ) ), а вектор и массив в C++ одни и те же
https://stackoverflow.com/ques... d-a-vector
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
4496 / 2366 / 985
Регистрация: 01.06.2021
Сообщений: 8,137
17.02.2025, 21:01 19
Цитата Сообщение от _stanislav Посмотреть сообщение
вектор и массив в C++ [выполняют] одни и те же [функции]
согласен, поэтому выше написал, что вектор может рассматриваться как массив по семантике.

Даже на cppreference встречается такое.

Является ли vector примером динамического массива?


Т.е. по сути, они описали вектор как динамический массив.

Но вот, я больше склоняюсь, что в вопросе ТС нужно выбирать только 1 и 4.
Тут нужно знать еще и контекст задания, идеи человека, который составлял задание...
0
 Аватар для SmallEvil
3791 / 2717 / 765
Регистрация: 29.06.2020
Сообщений: 9,991
17.02.2025, 21:34 20
Цитата Сообщение от Anvis Посмотреть сообщение
Со всякими страшными О
Хотел сказать непонятными ?

Некоторые учебные программы созданы не что бы обучить а что бы запутать.
И некоторые преподаватели.
Поэтому нужно рассчитывать на себя в большей степени.
А на такие вопросы начинать : "Ну семантически... " или "в принципе...", как кому угодно))
За развернутое мнение двойку не поставят. Если вообще слушать станут, а не попросят отвечать на след. вопрос.
А с автом. тестирующими системами - отвечаешь как положено, как ваша книжка пишет, ведь тесты создают те самые, кхм, специалисты.

Добавлено через 19 минут
Цитата Сообщение от Royal_X Посмотреть сообщение
что вектор может рассматриваться как массив по семантике
Тут уже была дискуссия на эту тему. И было доказано что семантика с массивом совпадает лишь частично.
Поэтому называть его прямо массивом (даже динамически - ошибка).
Только где то в контексте, где важна лишь вот та часть поддерживаемой семантики массива.

Вот пример как vector берёт и "ломает" семантику массива :

C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <vector>
int main(){
   const int N = 2, M = 3;
   std::vector<std::vector<int>> vec{{1,2,3}, {4,5,6}}; // РВАНЫЙ динамический массив
   std::cout << *(&vec[0][0] + 5) << std::endl;
   
   int (*arr)[M] = new int[N][M]{{1,2,3}, {4,5,6}};
   std::cout << *( &arr[0][0] + 5) << std::endl;
}
Непрерывность расположение элементов в массиве - основная его черта/характеристика.
Которую std::vector не может предоставить.

std::array уже ближе.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.02.2025, 21:34
Помогаю со студенческими работами здесь

Скорость работы std::vector и обычного динамического массива
Всем привет! Есть задача по мат.моделированию, размер сетки 100х50. Использовались обычные динамические массивы: double ***n; ...

Динамические массивы типа vector и array
#include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;array&gt; #include &lt;string&gt; using namespace std; int main() { const int...

Как правильно записывать в динамический массив типа класса обьекты? вот банальный пример
#pragma once #include &quot;iostream&quot; namespace Program { class Book { typedef unsigned int ui; private:

Реализовать шаблон класса vector, реализующий динамический массив
Реализовать шаблон класса vector, реализующий динамический массив. Определить 2 объекта класса vector и внешнюю функцию, выполняющую...

На основе контейнера vector построить двумерный динамический массив
Каким образом можно один двумерный массив скопировать в другой?С помощью copy() не получается На основе контейнера vector построить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

Новые блоги и статьи
Простая нейросеть на КуМир: Создание и обучение
EggHead 16.03.2025
Искусственные нейронные сети — удивительная технология, позволяющая компьютерам имитировать работу человеческого мозга. Если вы хотя бы немного интересуетесь современными технологиями, то наверняка. . .
Исполнитель Кузнечик в КуМир: Решение задач
EggHead 16.03.2025
Среди множества исполнителей в системе КуМир особое место занимает Кузнечик — простой, но невероятно полезный виртуальный персонаж, который перемещается по числовой прямой, выполняя ваши команды. На. . .
Исполнитель Водолей в КуМир: Решение задач
EggHead 16.03.2025
Разработка алгоритмического мышления — одна из ключевых задач для начинающих программистов, и система КуМир предлагает отличный способ погрузиться в этот процесс. Среди множества исполнителей в этой. . .
Исполнитель Чертежник в КуМир: Решение задач
EggHead 16.03.2025
Представьте, что вы можете рисовать на бесконечной координатной плоскости, перемещая точку, которая оставляет след. По вашей команде она может поднять перо и двигаться, не оставляя следа, или. . .
Исполнитель Робот в КуМир: Решение задач
EggHead 16.03.2025
КуМир (Комплект Учебных МИРов) — это учебная среда программирования, разработанная специально для обучения базовым концепциям алгоритмизации. Её главная фишка — использование русскоязычного. . .
Исполнитель Черепаха в КуМир: Решение задач
EggHead 16.03.2025
Представьте, что вы впервые учитесь программировать, а перед вами стоит задача заставить маленькую виртуальную черепашку рисовать на экране. Звучит забавно? Эта идея зародилась ещё в 1967 году, когда. . .
Конвейеры данных с Apache Kafka
Javaican 16.03.2025
В мире, где данные стали новой нефтью, Apache Kafka зарекомендовал себя как мощный инструмент для построения надежных и масштабируемых конвейеров данных. Созданный изначально командой LinkedIn в 2011. . .
Deno против Node.js: Будущее JavaScript рантайма
run.dev 16.03.2025
За последнее десятилетие Node. js стал абсолютным лидером среди JavaScript-рантаймов и фактическим стандартом для серверной разработки на JavaScript. Но в 2018 году тот же разработчик, который создал. . .
SwiftUI или UIKit - что выбрать для нового приложения iOS?
mobDevWorks 16.03.2025
Когда Apple представила SwiftUI на WWDC 2019, многим показалось, что дни UIKit сочтены. Новый декларативный фреймворк предлагал радикально иной подход к разработке интерфейсов. Вместо кропотливого. . .
Docker: Руководство для начинающих по созданию первого приложения
Mr. Docker 16.03.2025
Docker — это платформа, которая упаковывает ваше приложение и все его зависимости в стандартизированные блоки, называемые контейнерами. Эти контейнеры изолированы друг от друга и от основной системы,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru