Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 删除c+中列表类型数组的元素+;_C++ - Fatal编程技术网

C++ 删除c+中列表类型数组的元素+;

C++ 删除c+中列表类型数组的元素+;,c++,C++,我有下面的代码,在运行时出错,说迭代器不是增量的。我想删除数组中的列表项 #include <algorithm> #include <array> #include <list> using namespace std; struct pckt { float gen_time; int node_id; bool last; float end_time; int seq; }; int main() {

我有下面的代码,在运行时出错,说迭代器不是增量的。我想删除数组中的列表项

#include <algorithm>
#include <array>
#include <list>

using namespace std;

struct pckt
{
    float gen_time;
    int node_id;
    bool last; 
    float end_time;
    int seq;
};

int main() {
    array<list<pckt>, 50> nodelist;
    array<list<pckt>, 25> APlist;

    list<pckt>::iteratot it1; 

    for(int i=0; i < 25; ++i) {
        it1= APlist[i].begin();

        while (it1 !=APlist[i].end()) {
            APlist[i].erase (it1);
            it1++;

        }
    }
}
#包括
#包括
#包括
使用名称空间std;
结构pckt
{
浮动发电时间;
int node_id;
布尔最后;
浮动结束时间;
内部顺序;
};
int main(){
阵列节点列表;
阵列APlist;
列表::iteratot it1;
对于(int i=0;i<25;++i){
it1=APlist[i].begin();
while(it1!=APlist[i].end()){
APlist[i].擦除(it1);
it1++;
}
}
}

使用以下代码删除列表中的所有元素:

APlist[i].erase(APlist[i].begin(), APlist[i].end());
这将是最快的:

for(int i=0; i < 25; ++i) {
    APlist[i].clear();
}
for(int i=0;i<25;++i){
APlist[i].clear();
}
使用迭代器:

for(int i=0; i < 25; ++i) {
    it1 = APlist[i].begin();

    while (it1 != APlist[i].end()) {
        APlist[i].erase (it1);
        it1 = APlist[i].begin();
    }
}
for(int i=0;i<25;++i){
it1=APlist[i].begin();
while(it1!=APlist[i].end()){
APlist[i].擦除(it1);
it1=APlist[i].begin();
}
}
删除c中列表类型数组的元素++

不能从数组中删除元素。它们有固定的大小,所以您所能做的就是修改它们包含的元素

但是,查看您的代码,您似乎希望删除
std::数组中每个
std::list
容器的所有元素。为了实现这一点,您可以简单地迭代列表并调用每个元素。确保不要留下任何硬接线数字:像所有容器一样,
std::array
知道它包含多少元素:

for (auto& l : APlist)
  l.clear()

您也可以使用
clear()
。根据代码判断,
APlist.clear()是OP想要的。在该迭代器上调用
erase
将使其无效。因此,如果不先将它设置为某个有意义的值,就不能再次使用它。这是最好的答案。但是有人告诉我,
l
(小写
l
)是一个错误的标识符选择,因为它类似于
1
(一);)