Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.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++_Std_Poco - Fatal编程技术网

C++ 将删除旧元素的固定大小容器

C++ 将删除旧元素的固定大小容器,c++,std,poco,C++,Std,Poco,std或Poco中是否有容器适配器,允许指定容器适配器的大小和推送元素的位置,如果容器适配器已满,则将添加新元素以代替旧元素(或将在末尾添加,但第一个元素将被删除,所有剩余元素将移回一个位置) 例如,想象大小为3的容器 我将4个元素[1,2,3,4]顺次推入其中,结果得到了带有[2,3,4]或[4,2,3]的容器。您正在寻找的结构称为循环缓冲区。C++不提供一个容器来表示这种结构,但是当使用向量作为底层容器时,它可以很容易地编写。 为了了解如何实际实现它,你可以看看,OP询问了一个类似的结构,但

stdPoco中是否有容器适配器,允许指定容器适配器的大小和推送元素的位置,如果容器适配器已满,则将添加新元素以代替旧元素(或将在末尾添加,但第一个元素将被删除,所有剩余元素将移回一个位置)

例如,想象大小为3的容器


我将4个元素[1,2,3,4]顺次推入其中,结果得到了带有[2,3,4]或[4,2,3]的容器。

您正在寻找的结构称为循环缓冲区。C++不提供一个容器来表示这种结构,但是当使用<代码>向量作为底层容器时,它可以很容易地编写。 为了了解如何实际实现它,你可以看看,OP询问了一个类似的结构,但是在bools上运行。您的问题和他的问题之间的唯一区别是您实际上需要一个模板化的类,因此它看起来像这样:

template <typename T>
class circularBuffer {
   vector<T> data;
   unsigned int lastEntryPos;

   // methods to access "data"
};
模板
类循环缓冲{
矢量数据;
未签名的int-lastEntryPos;
//访问“数据”的方法
};
还可以添加第二个模板参数,指示参考底图向量的大小,并在构造函数中进行设置:

template <typename T, size_type size>
class circularBuffer {
   // ...
   circularBuffer(): data(size), lastEntryPos(0){};
};
模板
类循环缓冲{
// ...
circularBuffer():数据(大小),lastEntryPos(0){};
};

您要查找的结构称为循环缓冲区。C++不提供一个容器来表示这种结构,但是当使用<代码>向量作为底层容器时,它可以很容易地编写。 为了了解如何实际实现它,你可以看看,OP询问了一个类似的结构,但是在bools上运行。您的问题和他的问题之间的唯一区别是您实际上需要一个模板化的类,因此它看起来像这样:

template <typename T>
class circularBuffer {
   vector<T> data;
   unsigned int lastEntryPos;

   // methods to access "data"
};
模板
类循环缓冲{
矢量数据;
未签名的int-lastEntryPos;
//访问“数据”的方法
};
还可以添加第二个模板参数,指示参考底图向量的大小,并在构造函数中进行设置:

template <typename T, size_type size>
class circularBuffer {
   // ...
   circularBuffer(): data(size), lastEntryPos(0){};
};
模板
类循环缓冲{
// ...
circularBuffer():数据(大小),lastEntryPos(0){};
};

您要查找的结构称为循环缓冲区。C++不提供一个容器来表示这种结构,但是当使用<代码>向量作为底层容器时,它可以很容易地编写。 为了了解如何实际实现它,你可以看看,OP询问了一个类似的结构,但是在bools上运行。您的问题和他的问题之间的唯一区别是您实际上需要一个模板化的类,因此它看起来像这样:

template <typename T>
class circularBuffer {
   vector<T> data;
   unsigned int lastEntryPos;

   // methods to access "data"
};
模板
类循环缓冲{
矢量数据;
未签名的int-lastEntryPos;
//访问“数据”的方法
};
还可以添加第二个模板参数,指示参考底图向量的大小,并在构造函数中进行设置:

template <typename T, size_type size>
class circularBuffer {
   // ...
   circularBuffer(): data(size), lastEntryPos(0){};
};
模板
类循环缓冲{
// ...
circularBuffer():数据(大小),lastEntryPos(0){};
};

您要查找的结构称为循环缓冲区。C++不提供一个容器来表示这种结构,但是当使用<代码>向量作为底层容器时,它可以很容易地编写。 为了了解如何实际实现它,你可以看看,OP询问了一个类似的结构,但是在bools上运行。您的问题和他的问题之间的唯一区别是您实际上需要一个模板化的类,因此它看起来像这样:

template <typename T>
class circularBuffer {
   vector<T> data;
   unsigned int lastEntryPos;

   // methods to access "data"
};
模板
类循环缓冲{
矢量数据;
未签名的int-lastEntryPos;
//访问“数据”的方法
};
还可以添加第二个模板参数,指示参考底图向量的大小,并在构造函数中进行设置:

template <typename T, size_type size>
class circularBuffer {
   // ...
   circularBuffer(): data(size), lastEntryPos(0){};
};
模板
类循环缓冲{
// ...
circularBuffer():数据(大小),lastEntryPos(0){};
};

您可以使用容器
列表
向量
,然后在插入元素之前,检查容器的大小,如果满足计数,则弹出旧元素,然后推送新元素。
每次,您都可以按相反的顺序迭代列表,以获取元素作为其插入序列

#include <iostream>
#include <string>
#include <list>

using namespace std;

int main()
{
    list<int> q;
    for(int m = 0; m < 10; m++)
    {
        if(q.size() < 3)
            q.push_front(m);
        else
        {
            q.pop_back();
            q.push_front(m);
        }
    }

    for(auto x = q.rbegin(); x != q.rend(); x++)
        std::cout << *x;

    return 0;
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
清单q;
对于(int m=0;m<10;m++)
{
如果(q.size()<3)
q、 向前推(m);
其他的
{
q、 向后弹出();
q、 向前推(m);
}
}
对于(自动x=q.rbegin();x!=q.rend();x++)

std::cout您可以使用容器
列表
向量
,然后在插入元素之前,检查容器的大小,如果满足计数,则弹出旧元素,然后推送新元素。
每次,您都可以按相反的顺序迭代列表,以获取元素作为其插入序列

#include <iostream>
#include <string>
#include <list>

using namespace std;

int main()
{
    list<int> q;
    for(int m = 0; m < 10; m++)
    {
        if(q.size() < 3)
            q.push_front(m);
        else
        {
            q.pop_back();
            q.push_front(m);
        }
    }

    for(auto x = q.rbegin(); x != q.rend(); x++)
        std::cout << *x;

    return 0;
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
清单q;
对于(int m=0;m<10;m++)
{
如果(q.size()<3)
q、 向前推(m);
其他的
{
q、 向后弹出();
q、 向前推(m);
}
}
对于(自动x=q.rbegin();x!=q.rend();x++)

std::cout您可以使用容器
列表
向量
,然后在插入元素之前,检查容器的大小,如果满足计数,则弹出旧元素,然后推送新元素。
每次,您都可以按相反的顺序迭代列表,以获取元素作为其插入序列

#include <iostream>
#include <string>
#include <list>

using namespace std;

int main()
{
    list<int> q;
    for(int m = 0; m < 10; m++)
    {
        if(q.size() < 3)
            q.push_front(m);
        else
        {
            q.pop_back();
            q.push_front(m);
        }
    }

    for(auto x = q.rbegin(); x != q.rend(); x++)
        std::cout << *x;

    return 0;
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
清单q;
对于(int m=0;m<10;m++)
{
如果(q.size()<3)
q、 推_