学习C++primer遇到的有关问题

学习C++primer遇到的问题源代码如下,#include iostreamusing std::cout using std::endl#include str

学习C++primer遇到的问题
源代码如下,
#include <iostream>
using std::cout; using std::endl;
#include <string>
using std::string;
#include <list>
using std::list;
#include <cstddef>
//using std::size_t;

int main()

char* words[] = {"stately", "plump", "buck", "mulligan"};

  // calculate how many elements in words
  size_t words_size = sizeof(words)/sizeof(char*);

  // use entire array to initialize words2
  list<string> words2(words, words + words_size);

  for (size_t i = 0; i != words_size; ++i)
cout << words[i] << endl;

  return 0;
}
//为什么将char*改成string就能编译通过????????????????

[解决办法]
why not?
[解决办法]
你是定义成 list<string> 吧,改成 list<char *>就不要改啊。
[解决办法]
char*是指向内存中固定字符串的首地址
[解决办法]
用这个头文件#include <string>
说明string 也和list一样都是容器。
#include <iostream>
using std::cout; using std::endl;
#include <string>
using std::string;
#include <list>
using std::list;
#include <cstddef>
//using std::size_t;

int main()
{
char* words[] = {"stately", "plump", "buck", "mulligan"};

// calculate how many elements in words
size_t words_size = sizeof(words)/sizeof(char*);

// use entire array to initialize words2
list<char*> words2(words, words + words_size);

for (size_t i = 0; i != words_size; ++i)
cout << words[i] << endl;

return 0;
}
我这样给也能运行通过