我有一个整数数组,如图所示:
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);
}
我只是想知道,是否还有其他方法,可能有任何可用的库函数?
您可以使用两个迭代器构造函数:
std::list<int> ilist(std::begin(ia), std::end(ia));
std::vector<int> ivec(std::begin(ia), std::end(ia));
如果您没有 C++11 对std::begin
and的支持std::end
,您可以使用
std::list<int> ilist(ia, ia + 6);
在实际代码中,您的目标是提供数组长度函数而不是6
显式使用。
更好的是,您可以使用自己的模板begin
和end
函数模板,例如
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;
}