Доброго времени суток.
Чтобы предвосхитить вопросы, что я пытаюсь реализовать, приведу идею на Python:
main_dict = {"group_1": ["subgroup_1",
"subgroup_2"],
"group_2": ["subgroup_3",
"subgroup_4"]}
additional_dict = {"subgroup_1": ["eggs",
"bark"],
"subgroup_2": ["eggs",
"bark"],
"subgroup_3": ["eggs",
"bark"],
"subgroup_4": ["eggs",
"bark"]}
Таким образом, я пытаюсь получить словарь (или коллекцию) с ключом в виде <String^>
(в переводе на C++) и соответствующими значениями типа <array<String^>>
(предположительно?).
Пытаюсь создать подобную константную (мне не нужно будет изменять её в ходе программы) коллекцию:
std::map < String^, array<String^> > my_map = { {"group_1", {"subgroup_1", "subgroup_2"}},
};
или вот так
std::map < String^, array<String^>^ > ...
Увы, компилятор выдаёт ошибку в обеих случаях.
Отсутствуют экземпляры конструктора ..., соответствующие списку аргументов.
Прошу помочь мне разобраться в ошибке или подсказать более элегантный способ осуществления данной структуры.
Не стоит смешивать нативный код с управляемым.
Если использовать только коллекции .NET Framework, то вместо std::map
можно взять Dictionary
.
Массив - ссылочный тип, поэтому объявъяется так: array<String^>^
- в конце нужен ^
.
Инициализаторы коллекций в C++/CLI есть только для массива. С учётом этого код будет выглядеть так:
auto dict = gcnew Dictionary<String^, array<String^>^>();
dict->Add("group_1", gcnew array<String^> { "subgroup_1", "subgroup_2" });
Или использовать только неуправляемые типы:
std::map<std::string, std::array<std::string, 2>> my_map{ { "group_1", {"subgroup_1", "subgroup_2"} } };
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть такой пример использования condition_variable:
Учу С++ самостоятельно, вот решил написать программу, которая определяет, есть ли повторяющиеся цифры в числеЧтобы усложнить себе жизнь, добавил...
Есть пример который компилируется
у меня все работает хорошо, но в arr[0] где то присваивается 0Поэтому я пишу в PrintArray int i = 1