我实际上需要根据他们的长度对很多单词进行排序。所以单词存储在2d数组中。现在,我不想在排序的表单中使用单词本身,而是希望有一个指向每个单词的指针,这些单词可以存储在2d数组中,其中行表示单词-1的长度和列号。单词-1。
所以单词在字典[a] [b]中,我想要一个* sorted_list [max word size] [max no。的话]
我需要帮助才能将* sorted_list的单行传递给函数&访问该行中的单词。
编辑:我的尝试:这会在运行时发出未处理的错误
char *sublist[10][100];
sublist[(strlen(d[j]))-1][count[(strlen(d[j]))-1]]= d+(j*10); count[strlen(d[j])-1]++;
答案 0 :(得分:2)
为什么不制作std::multimap<std::string, LenghtComparator>
,其中LengthComparator
是返回s1.length() < s2.length()
的谓词?然后,您可以检索给定长度的所有单词的equal_range
。
答案 1 :(得分:0)
为什么不使用word-size作为键值来设置哈希表,然后将指针存储到其关联的哈希槽中的每个char
字符串?如果您愿意,可以使用std::unordered_map
完成,也可以使用std::vector
和std::list
与strlen()
的组合作为散列函数自行制作哈希表。例如,使用后一种设置,您可以执行以下操作:
char* my_string = "Something";
//create a hash-table with ten slots (that's what you have in your example)
//where each slot holds a word of N length
std::vector<std::list<char*> > hash_table(10);
//this will store my_string at the back of the list at hash_table[9]
hash_table[strlen(my_string)].push_back(my_string);
//if you want the current num elements in the list, that's easy to-do as well
int list_size = hash_table[9].size();