讨论
std::vector<>的{}用法比较方便,在stl中的共享指针中是否适用?
代码
#include <iostream>
#include <memory>
#include <vector>
using namespace std;int main()
{vector<int> vt1({1,3,5});vector<int> vt2{1,3,5};shared_ptr<vector<int>> pt1(new vector<int>({1,2,3}));shared_ptr<vector<int>> pt2(new vector<int>{1,2,3});auto pt = make_shared<vector<int>>();return 0;
}
以上代码正常运行。
#include <iostream>
#include <memory>
#include <vector>
using namespace std;
int main()
{auto pt = make_shared<vector<int>>({1,2,3});return 0;
}
以上代码会报错。
#include <iostream>
#include <memory>
#include <vector>
using namespace std;
int main()
{auto pt = make_shared<vector<int>>{1,2,3);return 0;
}
以上代码会报错。
结论
vector<>的{}用法,适用于shared_ptr<>中,不适用于make_shared<>中。