Объявление массива

168
03 марта 2019, 10:00

Почему я могу объявить a, но не могу b?

std::array a = {1,2,3,4,5};
std::array<std::array> b = {{1,2,3,4,5}};
Answer 1

Потому что компилятор не знает, что {{1,2,3,4,5}} - это именно std::array<std::array>>. Вы пытаетесь уговорить компилятор вывести не просто параметр шаблона, но и шаблонный параметр параметра шаблона (если не запутался :))

Попробуйте так:

std::array a = {1,2,3,4,5};
std::array<std::array<int,5>,1> b = {{1,2,3,4,5}};

или так:

std::array b = {std::array{1,2,3,4,5}};
Answer 2

C std::array так не получится, зато получится с std::vector

vector<vector<int>> b = { {1,2,3,4,5}, {6,7,8} };

UPD: Без new и оборачивания каждой внутренней скобки в array:

//придётся посчитать сколько элементов в строке
std::size_t n = 5; // Все строки должны быть одинаковой длины
int m[][n] = { {1,2,3,4,5}, {6,7,8,9,10} };
READ ALSO
Дефолтные параметры и полиморфизм

Дефолтные параметры и полиморфизм

Почему выводит A A, а не A B?

159
Как отловить запуск приложения Android?

Как отловить запуск приложения Android?

пишу сервис который убивает приложение Google Chrome, основная задача в том, как отловить запуск Google Chrome? Можно сделать циклом в отдельном потоке,...

185
Как покрыть unit тестами void методы?

Как покрыть unit тестами void методы?

подскажите пожалуйста, куда копать?

184
Как лучше перенести данные в JTable

Как лучше перенести данные в JTable

Я парсил сайт, все спаршиные данные я перевёл в строкиТеперь я должен поместить эти строки в таблицу

199