C++ 需要帮助了解列表容器吗

C++ 需要帮助了解列表容器吗,c++,arrays,list,linked-list,C++,Arrays,List,Linked List,我不确定这个链表会是什么样子 list<string> hashTable [HASH_TABLE_SIZE]; 但是什么呢 list<string> hashTable [HASH_TABLE_SIZE]; 列出哈希表[哈希表大小]; 看起来像?它看起来像这样: Head->[]->[]->[]->NULL [Head][Head][Head]... ^ ^ ^ | | | v v

我不确定这个链表会是什么样子

list<string> hashTable [HASH_TABLE_SIZE];
但是什么呢

list<string> hashTable [HASH_TABLE_SIZE];
列出哈希表[哈希表大小];

看起来像?

它看起来像这样:

Head->[]->[]->[]->NULL
[Head][Head][Head]...
  ^     ^      ^
  |     |      |
  v     v      v
 [ ]   [ ]    [ ]
  ^     ^      ^
  |     |      |
  v     v      v
 NULL  NULL   NULL

这是一个std::list的数组,std::string的数组,std::list可以向前和向后迭代,所以它实际上是一个双链接列表。看起来更像下图

每个:

哈希表[索引]: begin()-**-rbegin() | | v v rend()结束() /*按前进顺序遍历哈希表中的第个索引列表并将其打印出来*/ int f=0; 列表::迭代器fwdItr=hashTable[index].begin(); for(;fwdItr!=哈希表[index].end();++f,++fwdItr) { printf(“fwd列表项%d=%s\n”,f,*fwdItr); } /*在哈希表中以相反的顺序遍历索引的第个列表并将其打印出来*/ int r=0; list::reverse_iterator revItr=hashTable[index].rbegin(); for(;revItr!=哈希表[index].rend();++r,++revItr) { printf(“修订列表条目%d=%s\n”,r,*revItr); }
希望这有助于更好地说明std::list…

第一个不是链表;它是一个链表数组。取单个实例的值,画出多个值,每个值对应各自的数组槽。@WhozCraig是对的,但是您可以有一个链表的链表。。可以再筑巢了。
[Head][Head][Head]...
  ^     ^      ^
  |     |      |
  v     v      v
 [ ]   [ ]    [ ]
  ^     ^      ^
  |     |      |
  v     v      v
 NULL  NULL   NULL
hashTable[index]:

  begin()-*          *-rbegin()
          |          |
          v          v
  rend()<-[]<->[]<->[]->end()

/* walk index'th list in hashTable in forward order and print it out */
int f = 0;
list<string>::iterator fwdItr = hashTable[index].begin();
for (; fwdItr != hashTable[index].end(); ++f, ++fwdItr)
{
    printf("fwd list entry %d = %s\n", f, *fwdItr);
}


/* walk index'th list in hashTable in reverse order and print it out */
int r = 0;
list<string>::reverse_iterator revItr = hashTable[index].rbegin();
for (; revItr != hashTable[index].rend(); ++r, ++revItr)
{
    printf("rev list entry %d = %s\n", r, *revItr);
}