Vector<pair>:无需构造成对内部对象即可放置

问题描述 投票:0回答:1

假设我们有两个

struct

struct FIRST{
    int a=0;
    int b=0;
    FIRST(int a, int b): a(a), b(b){}
};
struct SECOND{
    int c=0;
    int d=0;
    SECOND(int c, int d): c(c), d(d){}
};

我们有

vector
中的
pair

std::vector<std::pair<FIRST, SECOND>> abcd;

我想要的是

emplace
a
pair
而不构造两个元素,所以这不是我想要的:

abcd.emplace_back(FIRST(1,2),SECOND(3,4));

但这行不通

abcd.emplace_back(1,2,3,4);

如何?还可能吗?

c++ vector std-pair emplace
1个回答
0
投票

使用

std::piecewise_construct

abcd.emplace_back(
    std::piecewise_construct,
    std::forward_as_tuple(1, 2),
    std::forward_as_tuple(3, 4)
);
© www.soinside.com 2019 - 2024. All rights reserved.