小编Mil*_*uli的帖子

如何在向量中构造一些类?

我正在上一门课,我需要有该课的向量。我希望就地构造对象而不是使用复制构造。看来使用复制构造是不可避免的。

#include <iostream>
#include <string>
#include <vector>


class MyData {

public:
    int age;
    std::string name;

    MyData(int age, std::string name) : age(age), name(name)
    {
        std::cout << "MyData::MyData(int, std::string)\n";
    }

    MyData(const MyData& myData) : age(myData.age), name(myData.name)
    {
        std::cout << "MyData::MyData(const MyData&)\n";
    }

    MyData(MyData&& myData)
        :age(std::move(myData.age)), name(std::move(myData.name))
    {
        std::cout << "MyData::MyData(MyData&&)\n";
    }

    ~MyData() {
        std::cout << "MyData::~MyData()\n";
    }

};

#define DEBUG(...) std::cout << "Exec: " #__VA_ARGS__ << ";\n"; __VA_ARGS__ 

int main()
{

    DEBUG(std::vector<MyData> sb1);
    DEBUG(sb1.emplace_back(MyData{ 32, "SJ" }));
    DEBUG(sb1.emplace_back(MyData{ 42, "SJ" }));
} …
Run Code Online (Sandbox Code Playgroud)

c++ containers vector std

0
推荐指数
1
解决办法
69
查看次数

标签 统计

c++ ×1

containers ×1

std ×1

vector ×1