c++帮助传递向量索引到函数
c++ help passing a vector index to a function
我知道如何将向量传递给函数,但是如何将向量索引传递给函数,或者至少指定函数正在修改哪个索引。例如,我在一个Car类上工作,它有一个矢量车轮指针,为了删除一个车轮,我的函数看起来像这样:
Wheel& remove() {
for (int i = 0; i < wheels.size(); i++) {
if (wheels[i].position == wheels.at(i)) {
??
}
我需要传递什么给函数来指定我想要删除哪个轮子?当一个轮子被移走时,它原来的位置还在,可以被另一个轮子填满。比如说这辆车有四个轮子…如果我想删除车轮矢量中的第二个索引,remove()的函数参数需要采取什么才能做到这一点?我应该先传入矢量,然后再传入具体的索引....吗如果是的话,语法是什么样的?
你可以通过一个整数来指定你想要删除的
void RemoveWheel(int i)
{
if( (i<wheels.size()) and (i>=0) )
wheels.erase(wheels.begin()+i);
}
http://www.cplusplus.com/reference/stl/vector/erase/如果你想为另一个轮子留出空间,你应该将wheels
定义为指针向量,并在第i个位置删除对象并保存NULL而不是它。
vector<Wheel *> wheels;
void RemoveWheel(int i)
{
if( (i<wheels.size()) and (i>=0) ) {
delete wheels[i];
wheels[i] = 0;
}
}
您的问题对我来说并不完全清楚,但是要从向量中删除元素,给定索引i,您可以这样做:
wheels.erase(wheels.begin() + i);
但是这样会更好:
auto e = std::remove_if(wheels.begin(), wheels.end(),
[](const Wheel & wheel) {
return wheel.position == wheel;
});
wheels.erase(e,wheels.end());
虽然我不确定是否要删除符合该标准的每个元素,或者只是第一个。如果你能在伪代码中显示你想要做的事情的逻辑,那将会很有帮助。
相关文章:
- C++ 在函数内按索引更改数组
- 为什么提升图库的 read_graphviz() 函数会改变节点的索引
- 如何在 STL 函数中找到传递给谓词的元素的索引?
- 修改链表主函数代码,用户将在其中输入节点的索引和数据以及正确的消息
- C++函数返回两个 char 数组的相同索引元素
- 如何使用 erase() 函数通过索引擦除矢量?
- 如何访问委托的paint()函数中的另一个索引?
- 使用此网格函数的立方体的正确顶点和索引是什么
- 是否有一个类似STL的函数来用索引的某个函数填充数组
- 为什么函数的任何索引处的下标运算符在C++中总是返回1
- 如何使用递归函数返回数组中整数的索引?
- CUDA 全局函数未正确添加某些索引的数组值
- 索引和访问 mex 函数中单元数组和矩阵的元素
- 为什么STD :: SPAN超载函数调用操作员索引
- 在成员函数之间传递const变量为数组的索引
- 如果我将索引变量更改为零,并且合并函数中的k = 0,则获得合并排序的错误结果
- 从给定索引返回子字符字符串的函数
- 使用函数从数组中索引最小值的问题
- 如何从函数返回索引?
- C++std库中“at()”索引函数的真实用例