将C数组附加到向量(在C++ 98/03中)非常简单,如下所示:
std::vector<int> vec;
const int array[5] = { 1 , 2 , 3 , 4 , 5};
vec.insert( vec.end() , array , array + 5 );
Run Code Online (Sandbox Code Playgroud)
有没有办法在C++ 98/03中以相反的顺序将数组附加到向量而无需编写for循环.(这里看着你肖恩父母.)
The*_*ist 22
你去吧 使用std::reverse_copy与std::back_inserter添加元素的矢量:
std::vector<int> vec;
int array[5] = { 1 , 2 , 3 , 4 , 5};
std::reverse_copy(array , array + 5, std::back_inserter(vec));
Run Code Online (Sandbox Code Playgroud)
如果您担心性能,请不要忘记reserve()在复制之前.
BoB*_*ish 16
vec.insert(std::end(vec),
std::rbegin(array),
std::rend(array));
Run Code Online (Sandbox Code Playgroud)
请注意,这使用的是C++ 14,但反向迭代器的使用时间要长得多,如果坚持使用较旧的标准,则只需手动创建它们:
int const a1[] = {1, 2, 3, 4, 5};
int a2[5];
std::copy(std::reverse_iterator<int const*>(std::end(a1)),
std::reverse_iterator<int const*>(std::begin(a1)),
std::begin(a2)); // copy in reverse
std::copy(std::begin(a2),
std::end(a2),
std::ostream_iterator<int>(std::cout, " ")); // prints "5 4 3 2 1 "
Run Code Online (Sandbox Code Playgroud)