我可以这样做:
#include <vector>
#include <memory>
int main(int argc, char const *argv[]) {
int size = 5;
int *array = new int[size];
load(array);
std::vector<int> v(array, array+size);
delete[] array;
}
和聪明的搬运工,这个(alt1):
#include <vector>
#include <memory>
int main(int argc, char const *argv[]) {
std::unique_ptr<int[]> array(new int[size]);
load(array.get());
std::vector<int> v(array.get(), array.get()+size);
}
我在想,既然有了这么多的机智,如果再短一点(alt2)就可以了:
#include <vector>
#include <memory>
int main(int argc, char const *argv[]) {
std::unique_ptr<int[]> array(new int[size]);
load(array.get());
std::vector<int> v(array);
}
但编译器拒绝了:
c++ -std=gnu++14 -g -Wall -O3 -c -o main.o main.cpp
main.cpp:6:19: error: no matching constructor for initialization of 'std::vector<int>'
std::vector<int> v(array);
因此,ALT1是最短的方式进入STD::向量与UnQuyJ-PTR?