C++ 可以使用std::pair保存三种数据类型的向量 vectorv;

C++ 可以使用std::pair保存三种数据类型的向量 vectorv;,c++,vector,std-pair,C++,Vector,Std Pair,还要提到如何使用“第一”和“第二”访问它们。 甚至有可能做到这一点,或者“联合”或“结构”是创建可以容纳两种以上数据类型的向量的唯一方法吗?std::vectorv是可能的,带有 vector< pair<pair<int, string> >, string> v; std::tuple是一个很好的选择: v[0].first.first = 42; v[1].first.second = "hello"; v[2].second = "world";

还要提到如何使用“第一”和“第二”访问它们。
甚至有可能做到这一点,或者“联合”或“结构”是创建可以容纳两种以上数据类型的向量的唯一方法吗?

std::vectorv是可能的,带有

vector< pair<pair<int, string> >, string> v;
std::tuple
是一个很好的选择:

v[0].first.first = 42;
v[1].first.second = "hello";
v[2].second = "world";
<代码>标准::向量v=/*…*/; std::get(v[0])=42; std::get(v[0])=“Hello”; std::get(v[0])=“World”;
适当的结构允许给出语义

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
{
智力年龄;
std::stringfirstname;
std::字符串lastName;
};
标准::矢量人=/*…*/;
人[0],年龄42岁;
人员[0]。firstName=“John”;
人员[0]。lastName=“Doe”;

您是否正在寻找包含三个值的
std::pair
?在这种情况下,看看有一对,有一对是没有问题的,但也许a在这里更相关。如果使用tuple,是否可以对它们进行排序?如果需要排序,我不会使用
tuple
。事实上,当切换到元组时,很多事情变得更加困难。用一个小的结构代替你的三元组。顺便说一句,你有一个拼写错误,错放了
.std::get(v[0])=42;std::get(v[0])=“Hello”;std::get(v[0])=“World”;但我无法分配从输入int n中获得的值;cin>>n;get(v[0])=n;给seg出故障,谢谢。你让我相信,使用POD结构比使用元组更好。。。。至少是我的申请。
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";