Гость
Map
Форумы / C++ [игнор отключен] [закрыт для гостей] / помогите инициализировать двухмерный массив / 17 сообщений из 17, страница 1 из 1
20.05.2021, 14:15
    #40071665
andron81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите инициализировать двухмерный массив
почему закоменченный код не рабочий, тогда как подобный код только с примитивным типом рабочий ?




Код: plaintext
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.
33.
34.
35.
36.
37.
38.
39.
40.
#include <iostream>
#include <memory>
#include <vector>
constexpr int X = 6; // row qty
constexpr int Y = 5; // column qty

struct prasetoReplace {
	std::wstring find;
	std::wstring replace;
};

// это не рабочий код:

/*
const std::array <std::array<prasetoReplace, X>, Y> aaa =
{
    {L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"}
    {L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},
    {L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},
    {L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},
    {L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},
    {L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"}
 }; */
 // А это рабочий код , всего лишь тип данных проще(int вместо prasetoReplace) :
const std::array <std::array<int, X>, Y> INT0 = { 
    5,7,3,1,1,
    5,7,3,1,1,
    5,7,3,1,1,
    5,7,3,1,1,
    5,7,3,1,1,
    5,7,3,1,1
};



int main()
{
    
    return 0;
}
...
Рейтинг: 0 / 0
20.05.2021, 14:44
    #40071679
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите инициализировать двухмерный массив
andron81,

"," не хватает в конце первой строки
...
Рейтинг: 0 / 0
20.05.2021, 14:49
    #40071681
andron81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите инициализировать двухмерный массив
Anatoly Moskovsky,

согласен, очепятка. но проблему не решило :(
...
Рейтинг: 0 / 0
20.05.2021, 14:54
    #40071683
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите инициализировать двухмерный массив
Может, стоит текст сообщения об ошибке прочитать?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.05.2021, 15:01
    #40071687
andron81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите инициализировать двухмерный массив
Dimitry Sibiryakov,


да читал: слишком много инициализоторов для const std::array<std::array<prasetoReplace, 6>, 5>

а почему много то ??? 6 строк, 5 столбцов. Да и для инта ж работает.
...
Рейтинг: 0 / 0
20.05.2021, 15:10
    #40071688
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите инициализировать двухмерный массив
Ты в array из пяти элементов пытаешься всунуть 30 массивов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.05.2021, 15:18
    #40071694
andron81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите инициализировать двухмерный массив
Dimitry Sibiryakov

Ты в array из пяти элементов пытаешься всунуть 30 массивов.



так что ли надо ? )))
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
const std::array <std::array<prasetoReplace, X>, Y> aaa =
{
    (L"1 ракушек", L"1 ракушку"), (L"1 ракушек", L"1 ракушку"), (L"1 ракушек", L"1 ракушку"), (L"1 ракушек", L"1 ракушку"), (L"1 ракушек", L"1 ракушку"),
    (L"1 ракушек", L"1 ракушку"), (L"1 ракушек", L"1 ракушку"), (L"1 ракушек", L"1 ракушку"), (L"1 ракушек", L"1 ракушку"), (L"1 ракушек", L"1 ракушку"),
    (L"1 ракушек", L"1 ракушку"), (L"1 ракушек", L"1 ракушку"), (L"1 ракушек", L"1 ракушку"), (L"1 ракушек", L"1 ракушку"), (L"1 ракушек", L"1 ракушку"),
    (L"1 ракушек", L"1 ракушку"), (L"1 ракушек", L"1 ракушку"), (L"1 ракушек", L"1 ракушку"), (L"1 ракушек", L"1 ракушку"), (L"1 ракушек", L"1 ракушку"),
    (L"1 ракушек", L"1 ракушку"), (L"1 ракушек", L"1 ракушку"), (L"1 ракушек", L"1 ракушку"), (L"1 ракушек", L"1 ракушку"), (L"1 ракушек", L"1 ракушку"),
    (L"1 ракушек", L"1 ракушку"), (L"1 ракушек", L"1 ракушку"), (L"1 ракушек", L"1 ракушку"), (L"1 ракушек", L"1 ракушку"), (L"1 ракушек", L"1 ракушку")
 };
...
Рейтинг: 0 / 0
20.05.2021, 15:20
    #40071696
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите инициализировать двухмерный массив
andron81,

Там просто больше скобочек надо чем вы думаете, потому что инициализируется внутренний массив в std::array. Поэтому надо на каждом уровне вложенности std::array добавлять скобки.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
struct S
{
    std::string a;
    std::string b;
};

const std::array<std::array<S, 2>, 2> aaa = {
  {
    {
      {
        {"", ""},
        {"", ""},
      }
    },
    {
      {
        {"", ""},
        {"", ""},
      }
    }
  }
};



Либо не извращаться и перечислить все в одном плоском инициализаторе:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
struct S
{
    std::string a;
    std::string b;
};

const std::array<std::array<S, 2>, 2> aaa = {"", "", "", "", "", "", "", ""};
...
Рейтинг: 0 / 0
20.05.2021, 15:25
    #40071697
andron81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите инициализировать двухмерный массив
Anatoly Moskovsky
andron81,

Там просто больше скобочек надо чем вы думаете, потому что инициализируется внутренний массив в std::array. Поэтому надо на каждом уровне вложенности std::array добавлять скобки.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
struct S
{
    std::string a;
    std::string b;
};

const std::array<std::array<S, 2>, 2> aaa = {
  {
    {
      {
        {"", ""},
        {"", ""},
      }
    },
    {
      {
        {"", ""},
        {"", ""},
      }
    }
  }
};



Либо не извращаться и перечислить все в одном плоском инициализаторе:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
struct S
{
    std::string a;
    std::string b;
};

const std::array<std::array<S, 2>, 2> aaa = {"", "", "", "", "", "", "", ""};



а как второй вариант понять ?

вот есть 2 элемента {L"элемент1", L"Элемент10"} и {L"элемент2", L"Элемент20"}

как их вставить ?
...
Рейтинг: 0 / 0
20.05.2021, 15:31
    #40071698
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите инициализировать двухмерный массив
andron81,

Все через запятую без {}.
{} только вокруг всего списка.
...
Рейтинг: 0 / 0
20.05.2021, 15:36
    #40071701
andron81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите инициализировать двухмерный массив
Anatoly Moskovsky,

так каждый ведь элемент это структура . каждый элемент тоже не обрамляет фигурными ???
...
Рейтинг: 0 / 0
20.05.2021, 15:40
    #40071704
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите инициализировать двухмерный массив
andron81,

{} не обязательны. Но если их ставить они должны соответствовать структуре всех уровней вложенности, а не только нижнего уровня.
...
Рейтинг: 0 / 0
20.05.2021, 15:44
    #40071705
andron81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите инициализировать двухмерный массив
Anatoly Moskovsky
andron81,

{} не обязательны. Но если их ставить они должны соответствовать структуре всех уровней вложенности, а не только нижнего уровня.


не обязательны? то есть могу поставить ??? вот я и поставил в первом посте. обратив каждый элемент в фигурные скобки. видимо обязательно не ставить !
...
Рейтинг: 0 / 0
20.05.2021, 17:39
    #40071751
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите инициализировать двухмерный массив
andron81вот я и поставил в первом посте. обратив каждый элемент в фигурные скобки.

Не каждый. Ты обернул два вложенных элемента из трёх. И именно в этом твоя ошибка. О чём
уже было сказано выше.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.05.2021, 18:19
    #40071753
помогите инициализировать двухмерный массив
а constexpr при инициализации обычного инта точно нужен?
...
Рейтинг: 0 / 0
20.05.2021, 19:05
    #40071762
andron81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите инициализировать двухмерный массив
Dimitry Sibiryakov

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

Не каждый. Ты обернул два вложенных элемента из трёх. И именно в этом твоя ошибка. О чём
уже было сказано выше.


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
/*
const std::array <std::array<prasetoReplace, X>, Y> aaa =
{
    {L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},
    {L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},
    {L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},
    {L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},
    {L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},
    {L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"},{L"1 ракушек", L"1 ракушку"}
 }; */



какие я обернул 2 элемента из 3 х ?
...
Рейтинг: 0 / 0
20.05.2021, 19:06
    #40071763
помогите инициализировать двухмерный массив
две скобки { открыты
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / помогите инициализировать двухмерный массив / 17 сообщений из 17, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]