Roh*_*ain 1 c++ arrays list vector c++11
我有一个整数数组,如下所示:
int ia[] = {1, 2, 3, 4, 5, 6};
Run Code Online (Sandbox Code Playgroud)
我想将它转换为a list<int>和a vector<int>.我想到的显而易见的方法是迭代数组,并将元素添加到list<int>和vector<int>:
for (auto val: ia) {
ilist.push_back(val);
ivec.push_vack(val);
}
Run Code Online (Sandbox Code Playgroud)
我只是想知道,是否还有其他任何方式,可能是任何可用的库函数?
jua*_*nza 11
您可以使用双迭代器构造函数:
std::list<int> ilist(std::begin(ia), std::end(ia));
std::vector<int> ivec(std::begin(ia), std::end(ia));
Run Code Online (Sandbox Code Playgroud)
如果你没有对C++ 11的支持std::begin和std::end,你可以使用
std::list<int> ilist(ia, ia + 6);
Run Code Online (Sandbox Code Playgroud)
在实际代码中,您的目标是提供数组长度函数而不是6显式使用.
更妙的是,你可以作用你自己begin和end函数模板,例如
template< class T, std::size_t N >
T* my_end( const T (&a)[N] )
{
return &a[N];
}
Run Code Online (Sandbox Code Playgroud)
编辑这里是一个数组长度函数模板:
template< class T, size_t N >
std::size_t size( const T (&)[N] )
{
return N;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
133 次 |
| 最近记录: |