我在向C++中的向量追加时遇到了一些问题/错误。我的代码是:
std::vector<int> maps(const std::vector<int> & values) {
for(int i = 0; i < std::vector.size(); i++){
values.pushback(maps[i] * 2);
}
return values;
}我的目标是创建一个包含一些数字的基列表,然后创建一个包含这些数字加倍的新列表。
我收到一个错误,不幸的是,它太长了,不能复制到这里。但我会给你详细的信息:
Exit Code: 254
STDERR
Stack dump:
0. Program arguments: /usr/lib/llvm-8/bin/clang -cc1 -triple x86_64-pc-linux-gnu -emit-obj -disable-free -disable-llvm-verifier -discard-value-names -main-file-(this is where it gets a bit long)完整的代码是(我猜,因为这是一个难题)
#include <vector>
std::vector<int> maps(const std::vector<int> & values){
for(int i = 0; i < std::vector.size(); i++){
values.push_back(maps[i] * 2);
}
return values;
}
int main(){
return 0;
}发布于 2021-07-13 14:14:42
根据你的问题。这就是你想要的。
std::vector<int> maps_double(const std::vector<int> & values) {
std::vector<int> doubles;
for(int i = 0; i < values.size(); i++){
doubles.push_back(values[i] * 2);
}
return doubles;
}但是在您的代码中,您正在做一些错误的事情。
for(int i = 0; i < std::vector.size(); i++)你要在std::vector上调用size()?不行。你需要有一个对象来调用它的大小。您可能希望这样调用:
for(int i = 0; i < values.size(); i++)然后你会这样做:
values.pushback(maps[i] * 2);您正在声明maps函数。然后使用下标来访问i索引。这是错误的。您正在将值推送到values,但是您需要一个新的向量。
发布于 2021-07-13 22:35:11
除了foragerDev所做的简单地纠正语法之外,
for(int i = 0; i < values.size(); i++){
doubles.push_back(values[i] * 2);
}真的应该使用:
for (const v : values)
doubles.push_back (v*2);当你真的想遍历集合中的所有元素时,不要使用老式的计数循环--有一种更直接的方法可以做到这一点。
但是您的函数(由foragerDev重写)只是一个标准算法:transform (如果您有C++20,则为ranges::transform )。
https://stackoverflow.com/questions/68356963
复制相似问题