C++ 如何创建不同类型的多维向量/数组?

C++ 如何创建不同类型的多维向量/数组?,c++,C++,我知道要创建多维向量,你需要这样写 std::vector< std::vector <int> > name; std::vector<int> firstVector; firstVector.push_back(10); numbers.push_back(thisVector); std::cout << numbers[0][0] One 200 5.1% Three 10 1.4% Nine 5000

我知道要创建多维向量,你需要这样写

std::vector< std::vector <int> > name;
std::vector<int> firstVector;
firstVector.push_back(10);
numbers.push_back(thisVector);
std::cout << numbers[0][0]
One     200    5.1%
Three    10    1.4%
Nine   5000   10.8%

我不确定我是否遵循了你的解释,但听起来你真正想要的是一个结构向量:

struct whatever { 
    std::string first; // The first column will be a string
    int second;        // ...the second would be ints
    double third;      // ...and the third would be doubles.
};

std::vector<whatever> data;
struct which{
std::string first;//第一列将是字符串
int second;/…第二个将是int
第三双;/…第三双是双打。
};
std::矢量数据;

就您的输出而言,您应该定义一个
操作符我不确定是否遵循了您的解释,但听起来您真正想要的是一个结构向量:

struct whatever { 
    std::string first; // The first column will be a string
    int second;        // ...the second would be ints
    double third;      // ...and the third would be doubles.
};

std::vector<whatever> data;
struct which{
std::string first;//第一列将是字符串
int second;/…第二个将是int
第三双;/…第三双是双打。
};
std::矢量数据;

就您的输出而言,您应该定义一个
操作符如果您的编译器支持C++11,您可以使用
元组的
向量

#include <vector>
#include <tuple>
#include <string>

int main()
{
    std::vector<std::tuple<std::string, int, double>> var;

    var.emplace_back("One", 200, 5.1);
    var.emplace_back("Three", 10, 1.4);
    var.emplace_back("Nine", 5000, 10.8);
}
#包括
#包括
#包括
int main()
{
std::向量var;
变量“一”,200,5.1;
变量emplace_back(“三”,10,1.4);
变量emplace_back(“九”,5000,10.8);
}

使用进行编译时索引。

如果编译器支持C++11,则可以使用
元组的
向量

#include <vector>
#include <tuple>
#include <string>

int main()
{
    std::vector<std::tuple<std::string, int, double>> var;

    var.emplace_back("One", 200, 5.1);
    var.emplace_back("Three", 10, 1.4);
    var.emplace_back("Nine", 5000, 10.8);
}
#包括
#包括
#包括
int main()
{
std::向量var;
变量“一”,200,5.1;
变量emplace_back(“三”,10,1.4);
变量emplace_back(“九”,5000,10.8);
}

使用进行编译时索引。

我建议将数据封装到类中,然后使用该类的向量进行jsut

(可能不会按原样编译)

类MyData
{
公众:
std::字符串col1;
int-col2;
双col3;
};
...
std::向量myData;
MyData数据1;
data1.col1=“一”;
data1.col2=10;
数据1.col3=5.1
myData.push_back(数据1);

这更便于使用,因为现在当您需要打印出集合时,您只需迭代一组对象,而不必担心索引或访问向量或元组的复杂向量。

我建议将数据封装到类中,而不是使用向量班级

(可能不会按原样编译)

类MyData
{
公众:
std::字符串col1;
int-col2;
双col3;
};
...
std::向量myData;
MyData数据1;
data1.col1=“一”;
data1.col2=10;
数据1.col3=5.1
myData.push_back(数据1);
这更便于使用,因为现在当您需要打印出集合时,您只需迭代一组对象,而无需担心索引或访问向量或元组的复杂向量