0

我有一个std::vectorof std::tuples,它存储整数类型以及一个没有复制构造函数的类。我的目标是向这个向量添加值,而不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;
}

Visual Studio 2015 在标准库文件“xmemory0”中的某处给出以下错误。

'std::tuple::tuple(std::tuple &&)':无法将参数 1 从 'const wchar_t [7]' 转换为 'std::_Tuple_alloc_t'
xmemory0 657

这样做的正确方法是什么?

4

0 回答 0