从 int[] 转换为列表<int>:更好的方法

Converting from int[] to list<int> : Any better way

本文关键字:int gt 方法 更好 lt 转换 列表      更新时间:2023-10-16

我有一个整数数组,如图所示:

int ia[] = {1, 2, 3, 4, 5, 6};

我想将其转换为list<int>vector<int>。我想到的显而易见的方法是迭代数组,并将元素添加到list<int>vector<int>:

for (auto val: ia) {
    ilist.push_back(val);
    ivec.push_vack(val);
}

我只是想知道,是否有其他方法,可能有任何可用的库函数?

您可以使用两个迭代器构造函数:

std::list<int> ilist(std::begin(ia), std::end(ia));
std::vector<int> ivec(std::begin(ia), std::end(ia));

如果您没有C++11对std::beginstd::end的支持,则可以使用

std::list<int> ilist(ia, ia + 6);

在实际代码中,您的目标是提供数组长度函数,而不是显式使用6

更好的是,您可以扮演自己的beginend函数模板,例如

template< class T, std::size_t N >
T* my_end( const T (&a)[N] )
{
  return &a[N];
}

编辑这里有一个数组长度函数模板:

template< class T, size_t N >
std::size_t size( const T (&)[N] )
{
  return N;
}