【发布时间】:2013-02-22 03:10:16
【问题描述】:
我需要一个容器来根据源 (int) 和目标 (int) 这两个属性存储值 (int),即当源向目标发送某些内容时,我需要将其作为元素存储在容器中。源由唯一的 int ID(从 0-M 的整数)标识,其中 M 在几十到几百之间,目标 (0-N) 也是如此。容器将通过另一个函数的迭代来更新。
我一直在使用vector(vector(int)),这意味着按源(目标(值))的顺序。后续过程需要检查此容器,以查看特定源和特定目的地的元素是否存在 - 它需要区分空的“空间”和填充的“空间”。容器有可能非常稀疏。
要存储的值可以是 0,所以我没有成功尝试找出空间是否为空,因为我似乎无法执行 container[M][N].empty() 之类的操作。
我没有使用地图的经验,但我看到另一个 post 表明地图可能有用,而 std::map<int, int> 似乎类似于 vector<vector<int>>。
总结一下:
- 有没有办法检查向量“空间”的特定向量是否为空(因为我无法将其与 0 进行比较)
-
std::map<int, int>是否更适合此目的,我该如何使用?
【问题讨论】:
-
哇哇哇...
vector<vector<int>>是与std::map<int, int>完全不同的动物... -
非空单元格与总单元格的预期平均比率是多少?它很低,然后地图更好。如果它很高,那么应该考虑一个向量。应该通过剖析来确定截止点的确切位置。
-
在我看来
map<pair<int,int>, int>可能更合适 -pair<int,int>将是源-目标 ID。 -
@MichaelBurr 我是新手,但你如何使用它?是
map information (1,1) = 0;吗?
标签: c++ map containers stdvector