Prova a guardare questo codice:
codice:
#include <iostream>
#include <vector>
#include <string>
const unsigned int num_letters = ('z' - 'a') + 1;
typedef std::vector<std::string> dictionary [num_letters];
void print_dictionary(dictionary d)
{
for(unsigned int i=0; i<num_letters; ++i) {
for(unsigned int j=0; j<d[i].size(); ++j) {
std::cout << d[i][j] << std::endl;
}
}
}
void insert_in_dictionary(dictionary D, std::string word)
{
int letter = word[0]-'a';
if(D[letter].size() == 0) {
D[letter].push_back(word);
return;
}
for(std::vector<std::string>::iterator it = D[letter].begin(); it != D[letter].end(); ++it) {
if((*it).compare(word) > 0) {
D[letter].insert(it, word);
return;
}
}
}
int main()
{
dictionary D;
std::string word = "apple";
insert_in_dictionary(D, word);
std::string another_word = "airplane";
insert_in_dictionary(D, another_word);
std::string just_another_word = "another";
insert_in_dictionary(D, just_another_word);
print_dictionary(D);
return 0;
}
Nota: l'ho scritto un po' al volo... Sembra funzionare, ma non è da escludere che ci sia qualche errore!