假设我们有两个
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);
如何?还可能吗?
使用
std::piecewise_construct
:
abcd.emplace_back(
std::piecewise_construct,
std::forward_as_tuple(1, 2),
std::forward_as_tuple(3, 4)
);