【发布时间】:2021-05-27 21:14:58
【问题描述】:
我需要编写代码来将唯一字符及其频率存储在动态数组中。随着新数据的进入,我需要增加它的大小。在这种情况下,新数据将是遇到的新字符。我想到的算法是每次从给定字符串中读取时检查已知字符列表。如果它是一个新字符,我需要将数组大小增加 1。如果它不是一个新字符,我将增加它的频率。它是一个结构字母数组(在下面的代码中)。问题是,我花了很多时间在这上面,并且在实现它时遇到了问题。所以问题是我如何才能准确地实现它?感谢您花时间提供帮助。
#include <iostream>
#include <string>
#include <bitset>
#define ARR_LEN(arr) sizeof(arr)/sizeof(arr[0])
using namespace std;
struct unique_char {
char character;
int frequency;
};
int main() {
int char_count;
string str;
getline(cin, str);
struct unique_char* chars = new struct unique_char[100];
system("PAUSE");
exit(0);
}
【问题讨论】:
-
使用
std::map<char, int>或std::unordered_map<char, int>。 -
这能回答你的问题吗? stackoverflow.com/questions/64049909/…
-
@463035818_is_not_a_number 问题的标题有误,并且引用的欺骗与 OP 的实际要求不匹配。
-
旁注:
std::size,在 C++17 中添加,是ARR_LEN宏的优雅且安全的替代品。请注意,如果数组为 decayed to a pointer,则两者都不会起作用 -
@ThomasMatthews 另一方面,除非有需要,否则从长远来看,干净的语义比效率更有用。