C++ 将值添加到'std::vector<;std::tuple<;自定义类、整数、双精度>>;`使用隐式完美转发

C++ 将值添加到'std::vector<;std::tuple<;自定义类、整数、双精度>>;`使用隐式完美转发,c++,c++11,initialization,perfect-forwarding,stdtuple,C++,C++11,Initialization,Perfect Forwarding,Stdtuple,我有一个std::vector的std::tuples,它与一个没有复制构造函数的类一起存储整数类型。我的目标是向该向量添加值,而不在内存中创建任何不必要的MyClass。因为,MyClass将在我的实际应用程序中存储大量数据 我尝试的是: #include <vector> #include <tuple> #include <iostream> #include <string> class MyClass { public:

我有一个
std::vector
std::tuple
s,它与一个没有复制构造函数的类一起存储整数类型。我的目标是向该向量添加值,而不在内存中创建任何不必要的
MyClass
。因为,
MyClass
将在我的实际应用程序中存储大量数据

我尝试的是:

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

class MyClass
{
    public:
        MyClass()                   = delete;
        MyClass(const MyClass &)    = delete;
        MyClass(const std::wstring & str, float flt)
            : Text(str), Value(flt)
        {
        }

        std::wstring Text;
        float Value;

    private:
};

int wmain(int argc, wchar_t *argv[], wchar_t *envp[])
{
    std::vector<std::tuple<MyClass, int, double>> Items;
    Items.emplace_back(L"Entry0", 2.3f, 5, 5.7);
    Items.emplace_back(L"Entry1", 3.4f, 6, 6.8);
    Items.emplace_back(L"Entry2", 4.5f, 7, 7.9);
    for (size_t i=0; i<Items.size(); i++)
    {
        std::wcout << std::get<0>(Items[i]).Text    << L'\t';
        std::wcout << std::get<0>(Items[i]).Value   << L'\t';
        std::wcout << std::get<1>(Items[i])         << L'\t';
        std::wcout << std::get<2>(Items[i])         << std::endl;
    }

    _wsystem(L"pause");
    return 0;
}
#包括
#包括
#包括
#包括
类MyClass
{
公众:
MyClass()=删除;
MyClass(常量MyClass&)=删除;
MyClass(常量std::wstring&str、float flt)
:文本(str),值(flt)
{
}
std::wstring文本;
浮动值;
私人:
};
内部wmain(内部argc、wchar\u t*argv[]、wchar\u t*envp[])
{
向量项;
项目。安置在后方(L“入口0”、2.3f、5、5.7);
项目。安置后方(L“入口1”、3.4f、6、6.8);
项目:安置后方(L“入口2”、4.5f、7、7.9);

对于(size_t i=0;我可以选择将类型更改为
vector
?或者给
MyClass
一个
std::pair
构造函数。