C ++使用动态名称创建数组

问题描述 投票:-3回答:1

我需要一个c ++中的create数组,但我需要数组总是带变量名

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帮助我?我怎么能做到这一点?

c++ arrays
1个回答
4
投票

如果您希望能够通过字符串名称访问不同的数组,请考虑使用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”函数中创建数组的大小。但是,矢量可以动态调整大小,因此根据您的使用情况,您甚至可能不需要在代码中创建/调整它们。

© www.soinside.com 2019 - 2024. All rights reserved.