声明指向不同字符串的2d指针数组(在2d数组中)

时间:2011-06-16 16:43:42

标签: c++

我实际上需要根据他们的长度对很多单词进行排序。所以单词存储在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]++;

2 个答案:

答案 0 :(得分:2)

为什么不制作std::multimap<std::string, LenghtComparator>,其中LengthComparator是返回s1.length() < s2.length()的谓词?然后,您可以检索给定长度的所有单词的equal_range

答案 1 :(得分:0)

为什么不使用word-size作为键值来设置哈希表,然后将指针存储到其关联的哈希槽中的每个char字符串?如果您愿意,可以使用std::unordered_map完成,也可以使用std::vectorstd::liststrlen()的组合作为散列函数自行制作哈希表。例如,使用后一种设置,您可以执行以下操作:

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();