在 C++11 中定义元组常量向量的更简洁方法
Cleaner way of defining a constant vector of tuples in C++11
我有一个常量元组向量,其中每个元组包含一个键、名称、数量、值。我是这样定义的-
// tuple of key, name, quantity, value
const std::vector<std::tuple<unsigned char, std::string, unsigned char, float> > myTable{
std::tuple<unsigned char, std::string, unsigned char, float>(0, "mango", 12, 1.01f),
std::tuple<unsigned char, std::string, unsigned char, float>(4, "apple", 101, 22.02f),
std::tuple<unsigned char, std::string, unsigned char, float>(21, "orange", 179, 39.03f),
};
在主函数中,我需要处理每个元组的索引和所有值。为简单起见,我使用以下方式打印它们-
for (int index = 0; index < myTable.size(); index++) {
auto key = std::get<0>(myTable[index]);
auto name = std::get<1>(myTable[index]);
auto quantity = std::get<2>(myTable[index]);
auto value = std::get<3>(myTable[index]);
std::cout << " index: " << index
<< " key:" << (int)key
<< " name:" << name
<< " quantity:" << (int)quantity
<< " value:" << value
<< std::endl;
}
可见vector的定义方式不是很干净。 我希望有很多更干净的东西,比如下面的东西-
const std::vector<std::tuple<unsigned char, std::string, unsigned char, float> > myTable{
(0, "mango", 12, 1.01f),
(4, "apple", 101, 22.02f),
(21, "orange", 179, 39.03f),
};
在 C++11 中是否有更清晰的定义元组常量向量的方法?
您可以使用 {}
:
const std::vector<std::tuple<unsigned char, std::string, unsigned char, float> > myTable{
{0, "mango", 12, 1.01f},
{4, "apple", 101, 22.02f},
{21, "orange", 179, 39.03f},
};
我有一个常量元组向量,其中每个元组包含一个键、名称、数量、值。我是这样定义的-
// tuple of key, name, quantity, value
const std::vector<std::tuple<unsigned char, std::string, unsigned char, float> > myTable{
std::tuple<unsigned char, std::string, unsigned char, float>(0, "mango", 12, 1.01f),
std::tuple<unsigned char, std::string, unsigned char, float>(4, "apple", 101, 22.02f),
std::tuple<unsigned char, std::string, unsigned char, float>(21, "orange", 179, 39.03f),
};
在主函数中,我需要处理每个元组的索引和所有值。为简单起见,我使用以下方式打印它们-
for (int index = 0; index < myTable.size(); index++) {
auto key = std::get<0>(myTable[index]);
auto name = std::get<1>(myTable[index]);
auto quantity = std::get<2>(myTable[index]);
auto value = std::get<3>(myTable[index]);
std::cout << " index: " << index
<< " key:" << (int)key
<< " name:" << name
<< " quantity:" << (int)quantity
<< " value:" << value
<< std::endl;
}
可见vector的定义方式不是很干净。 我希望有很多更干净的东西,比如下面的东西-
const std::vector<std::tuple<unsigned char, std::string, unsigned char, float> > myTable{
(0, "mango", 12, 1.01f),
(4, "apple", 101, 22.02f),
(21, "orange", 179, 39.03f),
};
在 C++11 中是否有更清晰的定义元组常量向量的方法?
您可以使用 {}
:
const std::vector<std::tuple<unsigned char, std::string, unsigned char, float> > myTable{
{0, "mango", 12, 1.01f},
{4, "apple", 101, 22.02f},
{21, "orange", 179, 39.03f},
};