需要帮助理解列表容器

时间:2013-11-06 04:48:22

标签: c++ arrays list linked-list

我不确定这个链表是怎么样的。

list<string> hashTable [HASH_TABLE_SIZE];

我会相信这一个:

list<string> hashTable;

看起来像这样:

Head->[]->[]->[]->NULL

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

看起来像?

2 个答案:

答案 0 :(得分:1)

它看起来像这样:

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

答案 1 :(得分:0)

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

每个

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

希望这有助于说明std :: list更好......