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
构造函数。