【问题标题】:C++ vector of pairs initializationC++ 向量对初始化
【发布时间】:2012-06-21 15:37:13
【问题描述】:

我有

vector< pair<int, int>> myVec (N);

我想让所有对初始化为 -1,-1。

【问题讨论】:

    标签: c++ vector std-pair


    【解决方案1】:

    给你:

    #include <utility>
    
    vector<pair<int, int>> myVec (N, std::make_pair(-1, -1));
    

    该构造函数的第二个参数是 N 对将采用的初始值。

    【讨论】:

    • 工作得很好,谢谢!不过,我必须等待 12 分钟才能接受答案。
    • 是否可以将向量初始化为不同的值,即为每个向量元素提供对?
    • 是的,使用初始化列表:vector&lt;pair&lt;int, int&gt;&gt; myVec = { {-1, -1}, {2, 5}, {3, 10} };
    • 初始化列表需要 c++0x 标准。
    【解决方案2】:

    只是添加一些额外的信息(不是提问者想要的,而是在已接受答案的 cmets 中要求的):

    可以用(C++11)单独初始化:

    std::vector<std::pair<int, int> > vec1 = { {1, 0}, {2,0}, {3,1} };
    
    std::vector<std::pair<int, int> > vec2 = {std::make_pair(1, 0),
                                               std::make_pair(2, 0),
                                               std::make_pair(3, 0)};
    

    在旧的 C++ 标准中,这样的事情会起作用:

    const std::pair<int,int> vals[3] = {std::make_pair(1, 0),
                                        std::make_pair(2, 0),
                                        std::make_pair(3, 0)};
    std::vector<std::pair<int, int> > vec2 (&vals[0], &vals[0] + 3);
    

    【讨论】:

      【解决方案3】:

      如果你想初始化所有对,也许你可以这样做:

      vector<pair<int, int>> directions {
          {1, 0},
          {-1, 0},
          {0, 1},
          {0, -1},    
      };
      

      这里已经初始化了 4 对。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-05-10
        • 1970-01-01
        • 2018-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-21
        相关资源
        最近更新 更多