我有一个std::vector
std::tuple
个存储整数类型的类以及一个没有复制构造函数的类。我的目标是为此向量添加值,而不在内存中创建任何不必要的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&amp;&amp;)':无法将参数1从'const wchar_t [7]'转换为'std :: _ Tuple_alloc_t' xmemory0 657
这样做的正确方法是什么?