我正在使用字符串向量,以便将一些数据存储在内存中。数据库不是一个选项。更准确地说是一串字符串向量。一个简单的场景:我需要存储生活在256个城市的人的姓名。
示例
NewYork: John, Bod, ...
London: Jim, Bill...
对于我使用的这个要求
vector<std::string> city[256];
新的要求是创建一个新的“类人”,每个项目将包含更多数据
class person {
string name;
string surname;
string email;
int age;
};
我正在解决此问题,以便找到存储和共享这些数据的最佳方式。
vector<class person> city[256];
显然最好使用指向对象的指针。 shared_ptr在这里适用吗?我们有TR1 安装在系统中,但我们不能使用升压库。
答案 0 :(得分:1)
城市,人......考虑数据库的时间。
答案 1 :(得分:0)
或使用矢量矢量?或矢量列表?
答案 2 :(得分:0)
您可以使用shared_ptr或本机指针,也可以将其存储为值。这取决于。你想要最快的观察吗?你想节省内存吗?你想要连续内存中的数据吗?你想支持线程吗?没有一般的正确答案。 256个对象不是大量的数据。
答案 3 :(得分:0)
我不会说指针更好是如此明显。是的,您可以将shared_ptr
存储在收藏中,但根据您访问数据的方式,您可能更愿意使用list
或map
。
答案 4 :(得分:0)
如果你有C ++ 11且只需要这个数据的单个全局版本,你可以使用这样的数据结构:
#include <unordered_map>
#include <unordered_set>
#include <string>
typedef std::unordered_multiset<std::string> name_set;
typedef std::unordered_map<std::string, name_set> city_map;
city_map city_db {
{ "Moscow", { "Ivan", "Igor", "Vladimir" } },
{ "Madrid", { "Julio", "Pedro", "Sanchez" } },
{ "Munich", { "Sepp", "Huber", "Maier" } }
};
int main()
{
return city_db["Munich"].size(); // just as an example
}