【发布时间】:2020-04-19 12:10:40
【问题描述】:
我有一个将整数向量作为键的映射。我用值的关键向量 {1, 2, 3}
typedef std::map<std::vector<int>, std::string> VectorMap;
VectorMap vectorMap;
vectorMap[std::vector<int>{1, 2, 3}] = "test";
然后我使用count方法显示是否可以找到VectorMap中的条目,以{1, 2, 3}的向量为key。
std::cout << "count: " << vectorMap.count(std::vector<int>{1, 2, 3}) << std::endl;
这会返回正确的计数。
计数:1
但是我想这样做,所以向量中整数的顺序无关紧要。所以我尝试与上面相同,但将矢量内容翻转,即{3, 2, 1}
std::cout << "count: " << vectorMap.count(std::vector<int>{3, 2, 1}) << std::endl;
这将返回 0。
计数:0
我想让矢量比较与内容的顺序无关,只要内容相同即可。
{1, 2, 3} count: 1
{3, 2, 1} count: 1
{1, 2} count: 0
{1, 2, 3, 4} count : 0
我怎样才能做到这一点?我应该完全使用不同的容器而不是 std::vector 吗?
【问题讨论】:
标签: c++ containers stdvector stdmap unordered