gpt4 book ai didi

c++ - 如何使用存储在列表中的特定范围的元素初始化 vector ?

转载 作者:行者123 更新时间:2023-11-30 02:05:59 24 4
gpt4 key购买 nike

我有一个list 和一个vector:

list<int> l;
for(int i=0; i<10; i++)
l.push_back(i);

vector<int> v;

我想使用 l 中的前 5 个元素初始化 v,在本例中为 {0,1,2,3,4}.

除了for循环加上v.push_back,还有别的办法吗? memcpy 还是 copy

PS:我目前没有使用C++0x/C++11

最佳答案

can使用 std::copystd::advance (而不是 + ,对于非随机访问迭代器):

#include <list>
#include <vector>
#include <iterator>
#include <algorithm>

int main() {
std::list<int> l;
for (int i = 0; i < 10; i++)
l.push_back(i);

std::vector<int> v;
v.reserve(5);

std::list<int>::iterator start = l.begin(), end = start;
std::advance(end, 5);
std::copy(start, end, std::back_inserter(v));

std::cout << v.size(); // 5
}

advance但是,由于 std::list<> 的性质,它是“慢”的;这就是为什么 op+不适用于 std::list<>::iterator .

关于c++ - 如何使用存储在列表中的特定范围的元素初始化 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9191984/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com