Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,709

Как поместить массив в вектор массивов?

05.12.2024, 15:58. Показов 2022. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Друзья! Вот что мне надо:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
#include <vector>
using namespace std;
 
int main()
{
    int foo [4];
    vector <int [4]> bar;
    bar.push_back (foo);
 
    return 0;
    
}
При компиляции такие вот ошибки. Не может он поместить вектор в массив векторов:

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
$ g++ main.cpp 
In file included from /usr/include/x86_64-linux-gnu/c++/12/bits/c++allocator.h:33,
                 from /usr/include/c++/12/bits/allocator.h:46,
                 from /usr/include/c++/12/vector:61,
                 from main_1.cpp:2:
/usr/include/c++/12/bits/new_allocator.h: In instantiation of ‘void std::__new_allocator<_Tp>::construct(_Up*, _Args&& ...) [with _Up = int [4]; _Args = {const int (&)[4]}; _Tp = int [4]]’:
/usr/include/c++/12/bits/alloc_traits.h:516:17:   required from ‘static void std::allocator_traits<std::allocator<_Tp1> >::construct(allocator_type&, _Up*, _Args&& ...) [with _Up = int [4]; _Args = {const int (&)[4]}; _Tp = int [4]; allocator_type = std::allocator<int [4]>]’
/usr/include/c++/12/bits/stl_vector.h:1281:30:   required from ‘void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = int [4]; _Alloc = std::allocator<int [4]>; value_type = int [4]]’
main_1.cpp:9:16:   required from here
/usr/include/c++/12/bits/new_allocator.h:175:11: error: parenthesized initializer in array new
  175 |         { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); }
      |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/new_allocator.h: In instantiation of ‘void std::__new_allocator<_Tp>::destroy(_Up*) [with _Up = int [4]; _Tp = int [4]]’:
/usr/include/c++/12/bits/alloc_traits.h:535:15:   required from ‘static void std::allocator_traits<std::allocator<_Tp1> >::destroy(allocator_type&, _Up*) [with _Up = int [4]; _Tp = int [4]; allocator_type = std::allocator<int [4]>]’
/usr/include/c++/12/bits/vector.tcc:501:28:   required from ‘void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {const int (&)[4]}; _Tp = int [4]; _Alloc = std::allocator<int [4]>; iterator = std::vector<int [4]>::iterator]’
/usr/include/c++/12/bits/stl_vector.h:1287:21:   required from ‘void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = int [4]; _Alloc = std::allocator<int [4]>; value_type = int [4]]’
main_1.cpp:9:16:   required from here
/usr/include/c++/12/bits/new_allocator.h:181:17: error: request for member ‘~int [4]’ in ‘* __p’, which is of non-class type ‘int [4]’
  181 |         { __p->~_Up(); }
      |           ~~~~~~^~~
In file included from /usr/include/c++/12/vector:63:
/usr/include/c++/12/bits/stl_uninitialized.h: In instantiation of ‘constexpr bool std::__check_constructible() [with _ValueType = int [4]; _Tp = int (&&)[4]]’:
/usr/include/c++/12/bits/stl_uninitialized.h:182:4:   required from ‘_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = move_iterator<int (*)[4]>; _ForwardIterator = int (*)[4]]’
/usr/include/c++/12/bits/stl_uninitialized.h:372:37:   required from ‘_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = move_iterator<int (*)[4]>; _ForwardIterator = int (*)[4]; _Tp = int [4]]’
/usr/include/c++/12/bits/stl_uninitialized.h:397:2:   required from ‘_ForwardIterator std::__uninitialized_move_if_noexcept_a(_InputIterator, _InputIterator, _ForwardIterator, _Allocator&) [with _InputIterator = int (*)[4]; _ForwardIterator = int (*)[4]; _Allocator = allocator<int [4]>]’
/usr/include/c++/12/bits/vector.tcc:487:3:   required from ‘void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {const int (&)[4]}; _Tp = int [4]; _Alloc = std::allocator<int [4]>; iterator = std::vector<int [4]>::iterator]’
/usr/include/c++/12/bits/stl_vector.h:1287:21:   required from ‘void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = int [4]; _Alloc = std::allocator<int [4]>; value_type = int [4]]’
main_1.cpp:9:16:   required from here
/usr/include/c++/12/bits/stl_uninitialized.h:90:56: error: static assertion failed: result type must be constructible from input type
   90 |       static_assert(is_constructible<_ValueType, _Tp>::value,
      |                                                        ^~~~~
/usr/include/c++/12/bits/stl_uninitialized.h:90:56: note: ‘std::integral_constant<bool, false>::value’ evaluates to false
Ладно, не может. Но почему-то объявляет он такой вектор без проблем:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
#include <vector>
using namespace std;
 
int main()
{
    int foo [4];
    vector <int [4]> bar;
    //bar.push_back (foo);
 
    return 0;
    
}
Bash
1
2
$ g++ main.cpp 
$

То есть вектор элементов объявлен может быть, а поместить туда элементы никак. Странно всё это. Сабж. Спасибо, кто откликнется.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.12.2024, 15:58
Ответы с готовыми решениями:

Массив: В массив b[11] поместить элементы двух массивов n[5], m[6].
извините сразу за глупый вопрос не могу решить простую задачу, мне нужно в массив b запихать другие два массива n, m вот что у меня вышло: ...

В массив C поместить макcимальные элементы из массивов A и B
В общем, есть два массива(A и B ) по n элементов, и есть 3 (C) массив, который должен состоять из 8 элементов. Нужно в массив C поместить...

Поместить в третий массив общие элементы двух массивов
здравствуйте. никак не могу додуматься как написать цикл по перебору элементов массива. Задача такая: есть два динамических массива. Нужно...

22
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13239 / 6871 / 1827
Регистрация: 18.10.2014
Сообщений: 17,416
06.12.2024, 18:04
Студворк — интернет-сервис помощи студентам
Отдельно стоит заметить, что если вас устраивает структура с такими "говорящими" именами полей как "one, two, three, four", значит вам на самом деле нужен был std::tuple. Хотя при условии однотипности полей по-прежнему лучшей версией tuple будет именно std::array.

То есть все равно в упор не ясно, что и зачем вы тут пытаетесь изобрести на ровном месте.
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,709
06.12.2024, 18:18  [ТС]
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
То есть все равно в упор не ясно, что и зачем вы тут пытаетесь изобрести на ровном месте.
да и не нужно вам. Чуваку, после сообщения которого вопрос был решён, всё было в упор ясно. Сразу. Без вые уточнений.
Как поместить массив в вектор массивов?
Ему спасибо ещё раз. Тему к закрытию.
0
фрилансер
 Аватар для Алексей1153
6510 / 5772 / 1135
Регистрация: 11.10.2019
Сообщений: 15,418
06.12.2024, 19:07
Цитата Сообщение от zss Посмотреть сообщение
2. У меня VS-2008, в которой еще нет std::array
внезапно, есть

//VS2008
C++
1
2
3
4
5
6
7
8
#include <array>
#include <iostream>
 
int main()
{
    std::tr1::array<int,3> a={1,2,3};
    std::cout<<a[2];
}

ЗЫ помню, как когда-то давно радовался, когда обнаружил там std::tr1::shared_ptr / std::tr1::weak_ptr
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.12.2024, 19:07

Поместить в третий массив произведение соответствующих элементов двух исходных массивов
Создать два одномерных массива длины 5. Элементы массива вводятся списком. Поместить в третий массив произведение соответствующих...

Сравнить знаки элементов двух массивов и поместить результаты в третий массив
Даны два массива одного размера, в которых нет нулевых элементов.Получить третий массив, каждый элемент которого равен 1, если элементы...

Поместить в третий массив среднее арифметическое соответствующих элементов исходных массивов
1.Создать два одномерных массива длины 5. Элементы массива вводятся списком. Поместить в третий массив среднее арифметическое...

В первый массив поместить по возрастанию отрицательные, а во второй - по убыванию положительные двух данных массивов
Есть два одномерных массива с размерностью 10. Оба массива выводятся через рандом в диапазоне от -10 до 10. Надо переместить элементы так,...

Как в один вектор поместить много классов?
Всем привет. Есть задумка а как сделать пока не ясно. Есть в наличии допустим много классов, в этих классах одинаковые интерфейсы ввода...


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

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru