如何在不使用任何循环的情况下将 std::vector 或数组插入 std::forward_list?
How to insert std::vector or array to a std::forward_list without using any loop?
forward_list<int> listOne;
forward_list<int> listTwo;
vector<int> arr = {2,4,3};
forward_list<int>::iterator it;
在上面提到的代码中,我想在 listOne
中插入一个 std::vector
,我尝试使用 insert_after
函数。
it = listOne.begin();
listOne.insert_after(it,arr);
但是没有用。
我想知道,有没有办法在 std::forward_list
中添加一个 std::vector
或数组而不用任何循环?
您可以使用 std::copy
和 std::front_inserter
copy(arr.rbegin(), arr.rend(), front_inserter(listOne));
如果您在构造时需要它,您可以将 begin() 和 end() 迭代器传递给 forward_list 构造函数:
std::vector<int> vec{1, 2, 3, 4, 5, 6};
std::forward_list<int> list{vec.cbegin(), vec.cend()};
I want to know that, is there a way to add a std::vector
or std::array
in a std::forward_list
without any loop?
由于这个问题比较笼统,我想用 std::forward_list
本身给出所有可能的解决方案:
使用range constructor of the std::forward_list
5
std::vector<int> arr{ 1, 2, 4, 3 };
std::forward_list<int> listOne{ arr.cbegin(), arr.cend() };
使用 assignment std::forward_list::operator=
3(从传递的范围创建一个温度 std::initializer_list
)!
std::vector<int> arr{ 1, 2, 4, 3 };
std::forward_list<int> listOne = { arr.cbegin(), arr.cend() };
要替换forward_list的内容,通过成员std::forward_list::assign()
std::vector<int> arr{ 1, 2, 4, 3 };
std::forward_list <int> listOne{ 11, 22 };
listOne.assign(arr.cbegin(), arr.cend()); // replaces the { 11, 22 }
通过成员std::forward_list::insert_after()
在转发列表中的指定位置后插入元素
std::vector<int> arr{ 1, 2, 4, 3 };
std::forward_list <int> listOne{ 0 };
// insert the arr after the first element
listOne.insert_after(listOne.begin(), arr.cbegin(), arr.cend());
forward_list<int> listOne;
forward_list<int> listTwo;
vector<int> arr = {2,4,3};
forward_list<int>::iterator it;
在上面提到的代码中,我想在 listOne
中插入一个 std::vector
,我尝试使用 insert_after
函数。
it = listOne.begin();
listOne.insert_after(it,arr);
但是没有用。
我想知道,有没有办法在 std::forward_list
中添加一个 std::vector
或数组而不用任何循环?
您可以使用 std::copy
和 std::front_inserter
copy(arr.rbegin(), arr.rend(), front_inserter(listOne));
如果您在构造时需要它,您可以将 begin() 和 end() 迭代器传递给 forward_list 构造函数:
std::vector<int> vec{1, 2, 3, 4, 5, 6};
std::forward_list<int> list{vec.cbegin(), vec.cend()};
I want to know that, is there a way to add a
std::vector
orstd::array
in astd::forward_list
without any loop?
由于这个问题比较笼统,我想用 std::forward_list
本身给出所有可能的解决方案:
使用range constructor of the
std::forward_list
5std::vector<int> arr{ 1, 2, 4, 3 }; std::forward_list<int> listOne{ arr.cbegin(), arr.cend() };
使用 assignment
std::forward_list::operator=
3(从传递的范围创建一个温度std::initializer_list
)!std::vector<int> arr{ 1, 2, 4, 3 }; std::forward_list<int> listOne = { arr.cbegin(), arr.cend() };
要替换forward_list的内容,通过成员
std::forward_list::assign()
std::vector<int> arr{ 1, 2, 4, 3 }; std::forward_list <int> listOne{ 11, 22 }; listOne.assign(arr.cbegin(), arr.cend()); // replaces the { 11, 22 }
通过成员
在转发列表中的指定位置后插入元素std::forward_list::insert_after()
std::vector<int> arr{ 1, 2, 4, 3 }; std::forward_list <int> listOne{ 0 }; // insert the arr after the first element listOne.insert_after(listOne.begin(), arr.cbegin(), arr.cend());