C++ 创建具有动态名称的数组

C++ Create array with dynamic name

本文关键字:数组 动态 创建 C++      更新时间:2023-10-16

我需要在 c++ 中创建一个数组,但我需要始终带有变量名称的数组

int Magic(string name_array,int n)
{
string Name = "Something";
Name.append(name_array);
double * Name = new double[n];
}
int main()
{
Magic("a.txt",10);
}

我有这个错误:

operator' : 'identifier1' differs in levels of indirection from 'identifier2'

我知道这不是蟒蛇,但也许map帮助我?我怎么能做到这一点?

如果您希望能够通过字符串名称访问不同的数组,请考虑使用 std::map<std::string, std::vector<double>> . 这会将字符串映射到数组C++更好、更动态的答案。 在这种情况下,您的代码将如下所示:

#include <iostream>
#include <map>
#include <vector>

void AddVector(std::map<std::string, std::vector<double>> &io_map,
    const std::string& i_name,
    const std::size_t i_size)
{
    io_map[i_name].resize(i_size);
}
int main()
{
    std::map<std::string, std::vector<double>> vector_map;
    AddVector(vector_map, "Vector1", 3);
    AddVector(vector_map, "Vector2", 10);
    std::cout << "Vector with string key Vector1 has size: " << vector_map["Vector1"].size() << std::endl;
    return 0;
}

在此代码中,我试图尽可能接近您给出的代码 - 将向量调整为您在"Magic"函数中创建数组的大小。 但是,向量可以动态调整大小,因此您甚至可能不需要根据您的用例在代码中创建/调整它们的大小。