gpt4 book ai didi

c++ - 如何计算存储在 map 中的 vector 中的元素数量

转载 作者:行者123 更新时间:2023-11-30 03:36:44 24 4
gpt4 key购买 nike

我有四个静态 vector 。在我的 .cpp 文件(不是我的 .h 文件!)中,我这样定义这些 vector :

     std::vector<Object*> ClassA::vecA;
std::vector<Object*> ClassA::vecB;
std::vector<Object*> ClassA::vecC;
std::vector<Object*> ClassA::vecD;

然后我用一些 Object 类型的对象填充这些 vector 中的每一个。

接下来我创建一个 map :

     std::map<std::string, std::vector<Object*> > cntr;

我用上面的 vector 和一个字符串作为每个 vector 的键来填充这个映射。

问题是,我如何访问 map 中的 vector 以找出它们包含的元素数量。我试过:

     for (it = Cntr.begin(); it != Cntr.end(); it++) 
{
if (it->first != token)
{
std::cout << it->first << std::endl;

int i = (it->second).size();

std::cout << "SIZE: " << i << std::endl;

}
}

但是我总是给我 1 的值。什么是正确的方法?

最佳答案

首先,您需要将迭代器设置为指向 map 的有效元素。当你这样做的时候

std::map<std::string, std::vector<Object*>>::iterator Class::it;
int size = it->second.size();

不指向任何东西,所以使用它是未定义的行为。你可以做的是使用

std::map<std::string, std::vector<Object*>>::iterator Class::it;
it = cntr.begin();
int size = it->second.size();

它现在为您提供了 map 中第一个 vector 的大小。

如果您想获得所有尺寸,则需要遍历 map 。你可以用一个很好的基于范围的 for 循环来做到这一点,比如

for (const auto & elem : cntr) // get a const reference to each pair
std::cout << elem.second.size();

关于c++ - 如何计算存储在 map 中的 vector 中的元素数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40552972/

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