将int数组的内容写入向量

Writing contents of a int array into a vector

本文关键字:向量 int 数组      更新时间:2023-10-16

我想将数组的内容写入向量中。

int A[]={10,20,30,40,50,60,70,80,90};
vector<int> my_vector;

早些时候,我曾使用memcpy将数组A的内容复制到另一个数组B中。我想使用my_vector而不是数组B

如何在没有for循环的情况下一次性将数组A的内容写入my_vector?

使用C++2011时,您希望使用

std::copy(std::begin(A), std::end(A), std::back_inserter(my_vector));

std::vector<int> my_vector(std::begin(A), std::end(A));

或者,实际上:

std::vector<int> my_vector({ 10, 20, 30, 40, 50, 60, 70, 80, 90 });

如果你没有C++2011,你想定义

namespace whatever {
    template <typename T, int Size>
    T* begin(T (&array)[Size]) { return array; }
    template <typename T, int Size>
    T* end(T (&array)[Size]) { return array + Size; }
}

并且将CCD_ 1和CCD_。

#include <algorithm>
#include <vector>
int main() {
    int A[]={10,20,30,40,50,60,70,80,90};
    std::vector<int> my_vector;
    unsigned size = sizeof(A)/sizeof(int);
    std::copy(&A[0],&A[size],std::back_inserter(my_vector));
}

C++11要简单得多。

#include <vector>
#include <algorithm>
int main() {
    int A[]={10,20,30,40,50,60,70,80,90};
    std::vector<int> my_vector(std::begin(A),std::end(A));
}

您可以使用memcpy,也可以在C++98/03中使用此类初始化。

int A[]={10,20,30,40,50,60,70,80,90};
vector<int> my_vector(A, A + sizeof(A) / sizeof(*A));

也可以使用算法,例如copy

std::copy(A, A + sizeof(A) / sizeof(*A), std::back_inserter(my_vector));

在C++11中,使用std::begin(A)std::end(A)作为数组的开始和结束。