c语言优化代码使用迭代器for (auto in = Iniomdl.begin(); in != Iniomdl.end(); ++in) { for (auto ic = in->lscsys.begin(); ic != in->lscsys.end(); ++ic) { if (ic->yes_or_not == 3) { in->lscsys.remove(*ic); } } }
时间: 2024-03-09 09:51:47 浏览: 62
【c中string的用法】c语言string类用法.docx
上述代码是C++代码,而不是C语言代码,C语言没有迭代器这个概念。如果你需要在C语言中实现类似的功能,可以使用普通的for循环,并在遍历过程中删除需要删除的元素。代码如下:
```
for (int i = 0; i < Iniomdl.size; ++i) {
for (int j = 0; j < Iniomdl.lscsys.size; ++j) {
if (Iniomdl.data[i].lscsys[j].yes_or_not == 3) {
// 删除元素
for (int k = j; k < Iniomdl.data[i].lscsys.size - 1; ++k) {
Iniomdl.data[i].lscsys[k] = Iniomdl.data[i].lscsys[k + 1];
}
Iniomdl.data[i].lscsys.size -= 1;
// 由于删除了元素,需要将j减一
j--;
}
}
}
```
需要注意的是,在删除元素时,为了保证元素的顺序不变,需要将需要删除的元素之后的所有元素向前移动一位。同时,由于删除了元素,需要将当前的索引j减一。
阅读全文