我试图将两个值添加到自定义类型的 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/

10-10 10:49