我可以声明一个带有两个参数的向量吗?

时间:2019-06-11 00:47:41

标签: c++ vector parameters stl containers

如何声明可以容纳两个不同数据类型的向量?初始化import { Crashlytics } from '@ionic-native/fabric/ngx';给了我很多错误。

4 个答案:

答案 0 :(得分:9)

您可以拥有:

  • vector< pair<int, string> >始终为每个向量成员存储一个int和一个字符串,请参见std::pair
  • vector< variant<int, string> >,这是一个标记的变体,它为每个向量元素存储一个int或一个字符串,但不能为空(尽管您可以在列表中放入第三个类型来表示空),请参见std::variant
  • vector< any >,请参阅std::any

像往常一样,可能有更好的方法来解决您要解决的任何问题。

答案 1 :(得分:3)

STL容器(包括向量)都保存单个类型的元素的集合。 vector<int>持有intvector<string>持有string

您可以声明自己的结构,其中包含intstring,并制作其中的vector

struct Foo { int i; string s; };
vector<Foo> v;

或使用std::pairvector<pair<int, string> > 但是您不能拥有一个向量,其中包含字符串和整数的随机混合。

答案 2 :(得分:2)

使用std::tuple

vector<tuple<int,string>>

答案 3 :(得分:0)

使用std :: tuple

#include <iostream>
#include<vector>
#include<tuple>
using namespace std;

int main()
{

    vector<tuple<int,string>> V ;
    V.push_back(make_pair(1,"usingtuple"));
    for(auto a : V)
    {
        cout<<get<0>(a)<<" "<<get<1>(a);
    }
    return 0;
}