【发布时间】:2020-03-22 08:42:41
【问题描述】:
我的任务是将项目从 java 转换为 c++,我一直在尝试转换下面的代码。目前,该项目是一个网络scraper,所以我设法从网站上抓取数据并将其存储在向量中。在 C++ 中,现在我在向量中有“月”数据,我想将每个月的计数存储在链接的哈希图中。但是,我似乎找不到链接哈希图的 C++ 版本。我有什么想法可以将下面的代码转换为 C++ 吗?
LinkedHashMap<String, Integer> numberOfPost = new LinkedHashMap<String, Integer>();
int janCounter = 0;
int febCounter = 0;
int marCounter = 0;
int aprCounter = 0;
int mayCounter = 0;
int juneCounter = 0;
int julyCounter = 0;
int augCounter = 0;
int septCounter = 0;
int octCounter = 0;
int novCounter = 0;
int decCounter = 0;
String pattern = "MMM";
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
ArrayList<?> STArray;
try {
STArray = this.data;
Iterator STitr = STArray.iterator();
while (STitr.hasNext()) {
STPost St = (STPost) STitr.next();
Date retrievedate = St.getTime();
String strDate = sdf.format(retrievedate);
if(strDate.equals("Jan")) {
janCounter++;
}
else if (strDate.equals("Feb")) {
febCounter++;
}
else if (strDate.equals("Mar")) {
marCounter++;
}
else if (strDate.equals("Apr")) {
aprCounter++;
}
else if (strDate.equals("May")) {
mayCounter++;
}
else if (strDate.equals("June")) {
juneCounter++;
}
else if (strDate.equals("July")) {
julyCounter++;
}
else if (strDate.equals("Aug")) {
augCounter++;
}
else if (strDate.equals("Sept")) {
septCounter++;
}
else if (strDate.equals("Oct")) {
octCounter++;
}
else if (strDate.equals("Nov")) {
novCounter++;
}
else if (strDate.equals("Dec")) {
decCounter++;
}
numberOfPost.put("December", decCounter);
numberOfPost.put("January", janCounter);
numberOfPost.put("Feburary", febCounter);
numberOfPost.put("March", marCounter);
numberOfPost.put("April", aprCounter);
numberOfPost.put("May", mayCounter);
numberOfPost.put("June", juneCounter);
numberOfPost.put("July", julyCounter);
numberOfPost.put("August", augCounter);
numberOfPost.put("September", septCounter);
numberOfPost.put("October", octCounter);
numberOfPost.put("November", novCounter);
}
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
【问题讨论】:
-
也许这个answer可以帮助你。
-
我认为 std::map 正是你需要的en.cppreference.com/w/cpp/container/map
-
这段代码需要DRYer
-
您好,感谢 stdLLmap 似乎有很大帮助,但它不会打印在订单中。目前它正在打印 feburary, janurary, March 而不是 january,feburary,march
标签: c++