gpt4 book ai didi

c++ - 使用转换填充 vector 后,新的 c++11 for 循环不起作用

转载 作者:搜寻专家 更新时间:2023-10-30 23:51:11 24 4
gpt4 key购买 nike

我目前正在学习 STL,并且正在研究映射、过滤等主题。我最近学到了很多新东西,比如新的 c++11 for loop(with auto)我(有点)不明白事物的工作方式,但我想使用“转换”功能来填充另一个 vector (映射主题)。但是在我构建程序并运行它之后,它给了我一个错误,如下所示:“无法寻找值初始化的 vector 迭代器”

我不确定那是什么意思或有什么错误,你们能帮我理解 for 循环的概念以及我在这里做错了什么吗?

p.s 最终“转换”的运算符是在教程中用一个 lambda 东西(我仍然需要学习并且不知道)完成的,我尝试制作一个函数并猜测它会起作用。

int mult(int a) {
return a * 10;
}
int main() {
vector<int> v{ 1,2,3,4,5 };
vector<int> v1;
for (auto& i : v) {
cout << i << endl;
}
if (v1.empty()) cout << "v1 is empty" << endl;
cout << "v1" << endl;
transform(v.begin(), v.end(), v1.begin(), mult);
for (auto &i : v1) {
cout << i << endl;
}
}

最佳答案

transform 不会扩展范围,它只会写入假定为非空的现有范围。 v1是空的,所以不能用来存放转换的结果。您的选择是确保 v1 包含足够的元素供算法覆盖:

vector<int> v1(v.size());

或使用 std::back_inserter创建一个增加 v1 大小的迭代器:

transform(v.begin(), v.end(), back_inserter(v1), mult);

关于c++ - 使用转换填充 vector 后,新的 c++11 for 循环不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57393349/

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