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

时间:2018-03-02 13:27:08

标签: c++ arrays

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

export PATH="/usr/local/bin:/usr/local/sbin:~/bin:$PATH"

我有这个错误:

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

1 个答案:

答案 0 :(得分: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;
}

在这段代码中,我试图尽可能接近你给出的代码 - 将矢量调整到你在&#34; Magic&#34;中创建数组的大小。功能。但是,矢量可以动态调整大小,因此根据您的使用情况,您甚至可能不需要在代码中创建/调整它们。