我试图将两个值添加到自定义类型的 vector 中,而不创建该类型的变量。
typedef struct duo{
int uniqueID;
double data;
};
vector<duo> myVector;
myVector.push_back({1,1.0});
但这是不允许的??
我可以使它起作用的唯一方法是创建变量,但感到乏味...
vector<duo> myVector;
duo temp = {1,1.0};
myVector.push_back(temp);
还有...我为什么不能这样做?
duo temp;
temp = {1,1.0};
但我可以这样做:
duo temp = {1,1.0};
???
最佳答案
使用std::vector::emplace_back()构建 vector 时,可以避免创建临时对象。
下面是代码示例。
class duo {
public:
duo(int uniqueID_, double data_)
: uniqueID(uniqueID_)
, data(data_) {}
private:
int uniqueID;
double data;
};
int main() {
vector<duo> myVector;
myVector.emplace_back(1, 1.0);
}
关于c++ - 不能将struct类型的元素添加到vector吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28164365/