使用 std::pair 可以容纳三种数据类型的向量
Vector that can hold three data types using std::pair
vector< pair<pair<int, string> >, string> v;
同时提及如何使用 'first' 和 second' 访问它们。
甚至有可能做到这一点,或者 "union" 或 "structure" 是创建可以容纳两种以上数据类型的向量的唯一方法吗?
std::vector< std::pair<std::pair<int, std::string>, std::string> > v;
是可能的,用
v[0].first.first = 42;
v[1].first.second = "hello";
v[2].second = "world";
std::tuple
是一个不错的选择:
std::vector<std::tuple<int, std::string, std::string>> v = /*..*/;
std::get<0>(v[0]) = 42;
std::get<1>(v[0]) = "Hello";
std::get<2>(v[0]) = "World";
适当的结构允许赋予语义
struct Person
{
int age;
std::string firstName;
std::string lastName;
};
std::vector<Person> persons = /*...*/;
persons[0].age = 42;
persons[0].firstName = "John";
persons[0].lastName = "Doe";
vector< pair<pair<int, string> >, string> v;
同时提及如何使用 'first' 和 second' 访问它们。 甚至有可能做到这一点,或者 "union" 或 "structure" 是创建可以容纳两种以上数据类型的向量的唯一方法吗?
std::vector< std::pair<std::pair<int, std::string>, std::string> > v;
是可能的,用
v[0].first.first = 42;
v[1].first.second = "hello";
v[2].second = "world";
std::tuple
是一个不错的选择:
std::vector<std::tuple<int, std::string, std::string>> v = /*..*/;
std::get<0>(v[0]) = 42;
std::get<1>(v[0]) = "Hello";
std::get<2>(v[0]) = "World";
适当的结构允许赋予语义
struct Person
{
int age;
std::string firstName;
std::string lastName;
};
std::vector<Person> persons = /*...*/;
persons[0].age = 42;
persons[0].firstName = "John";
persons[0].lastName = "Doe";