C++ 在向量中查找相同的记录
c++ finding same record in vector
我有一个包含月年的向量
2013年1月2013年1月2013年1月一月2014一月2014一月2014一月20142014年2月2014年2月
基本上我想做的是搜索向量,对于每个相同的记录,将它们分组一起喜欢例如
total count for Jan2013 = 3;
total count for Jan2014 = 4;
total count for Feb2014 = 2;
当然,正如我们所知,我们可以简单地写多个if来解决它
if(monthyear = "Jan2013") {
//add count
}
if(monthyear = "Jan2014") {
//add count
}
if(monthyear = "Feb2014") {
//add count
}
但是程序员不可能以这种方式编写代码。如果有额外的月份年份 2014 年 3 月,2014 年 4 月,2014 年 5 月一直到 2014 年 12 月怎么办以及2015年1月-2015年12月等。
我认为我不应该在从长远来看,并寻找一种更有活力的方法。
我不要求代码,而只是要求一些步骤,也许会给我一些提示,说明我应该研究哪些 c++ 方法。
提前致谢
您可以使用
std::map
.例如
std::map<std::string, size_t> m;
for ( const std::string &s : v ) ++m[s];
我可能会做一个std::map<monthyear, int>
.对于矢量的每个成员,递增地图的该成员。
只是为了完整性:@VladfromMoscow的解决方案最适合您对输入知之甚少的一般情况。对于长度为 N
的输入来说,它的复杂性O(N log N)
。
等效地,您可以先在 O(N log N)
中对输入进行排序,然后O(N)
遍历排序的输入并将计数存储在std::vector<std::pair<std::string, int>>
中。
但是,如果您有关于输入范围的先验信息(假设您确定它从 2013 年 1 月运行到 2014 年 1 月),您也可以直接运行您的输入并以O(N)
复杂性更新预分配的std::vector<std::pair<std::string, int>>
。
相关文章:
- 正在查找文档以获得PS4平台的C++中的设备信息
- 在C++中查找文件
- 模板元程序查找相似的连续类型名称
- 在UNIX系统中使用DIR查找文件的字节大小
- 查找最接近的大于当前数字的数字的索引
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 查找后更改类变量
- 将两个数组中的差异记录在第三个数组中
- 使用正则表达式regex_search在字符串中查找字符串
- 使用gcc从静态链接的文件中查找可选符号
- 在C++中查找范围的长度
- 算法问题:查找从堆栈中弹出的所有序列
- 在序列中查找相似的数字并记录最大连续连胜
- 查找记录等于或最接近使用向量C 的平均值
- 尝试在hash_map中查找记录时应用程序崩溃
- CDao记录集::查找错误
- 激活记录是否用于查找错误行
- C++ 在向量中查找相同的记录
- 为什么 g++ 在 LIBRARY_PATH/./lib64 中查找,以及它在哪里记录
- 如何查找指向IPv6地址的SRV记录