gpt4 book ai didi

c++ - 存储一组不同类型的数组

转载 作者:太空宇宙 更新时间:2023-11-04 16:25:29 24 4
gpt4 key购买 nike

出于兴趣,假设我有以下类(class):

class Data
{
public:
template<class T>
std::vector<T> getData(std::string& dataName);
private:
...
}:

因此该类存储了一组任意类型的 vector 。每个 vector 都有一个名称,我在检索它时知道它的类型。我可以使用什么容器将此数据存储在 Data 类中? std::vector<std::pair<std::string,std::vector<T>>>

更新:

我还需要迭代这个类,并且这些项目必须与我添加它们的顺序相同。

例如,我可能有:

ownerNames: std::vector<std::string>;
ipAddress: std::vector<char>;

在我的店里。因此,当我迭代时,我需要按此顺序使用它们。

最佳答案

如果您在检索时知道类型,请使用 boost::any:

struct Data
{
std::map<std::string, boost::any> store;

template <typename T>
std::vector<T> & get(std::string const & s)
{
boost::any & a = store.find(s)->second; // check existence!
return boost::any_cast<std::vector<T> &>(a); // try/catch bad cast!
}

template <typename T>
bool put(std::string const & s, std::vector<T> v)
{
return store.emplace(s, std::move(v)).second;
}
};

用法:

void f(Data & d)
{
try
{
auto & v = d.get<int>("MyNumbers");
}
catch (boost::bad_any_cast const & e)
{
std::cout << "'MyNumbers' is not an int-vector.\n";
}
}

关于c++ - 存储一组不同类型的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12354556/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com