1

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

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

我想将其转换为 alist<int>和 a vector<int>。我想到的明显方法是遍历数组,并将元素添加到list<int>and vector<int>

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

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

4

1 回答 1

11

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

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

如果您没有 C++11 对std::beginand的支持std::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;
}
于 2013-07-08T18:52:06.207 回答