我正在学习 C++/通用编程,有时在为旧标准编写的练习时尝试 C++11 功能。
这个练习涉及一个指向字符串的指针向量。
#include <vector>
#include <string>
#include <iostream>
int main()
{
using std::string ;
using std::vector ;
using std::cout ;
using std::endl ;
vector<string *> v = {new string("Hello") , new string("World")} ;
for (string * x : v) {
cout << *x << " " ;
delete x ;
}
cout << endl ;
}
我很难弄清楚如何将初始化列表与这个向量一起使用,但这似乎可行。
此版本也适用:
//...
string s1 = "Hello" ;
string s2 = "World" ;
vector<string *> v = {&s1 , &s2} ;
for (string * x : v)
cout << *x << " " ;
//...
它看起来更干净,从我到目前为止所学到的知识来看,它似乎是更好的解决方案。
但我发现自己想知道:是否有其他方法可以初始化向量而无需提前创建字符串或不必使用删除?我读到的内容表明 {} 列表应该是通用的。
对于它的价值,这给出了一个相当灾难性的错误:
vector<string *> v = {"Hello" , "World"} ;