C++ 在不收缩容器的情况下添加和删除容器中的元素

C++ 在不收缩容器的情况下添加和删除容器中的元素,c++,containers,add,erase,C++,Containers,Add,Erase,如何制作一个容器,您可以在其中添加元素,例如,在开始1、2、3处添加元素,然后有两个空格,然后是4、5、6。所以看起来是这样的: add(1, 0) -> add one on position 0 add(2, 1) add(3, 2) add(4, 5) add(5, 6) print() --> 0-2: 1,2,3 4-5: 4,5 erase(2, 0) -> (length, position) print() --> 2: 3 4-5: 4,5 目的是在以

如何制作一个容器,您可以在其中添加元素,例如,在开始1、2、3处添加元素,然后有两个空格,然后是4、5、6。所以看起来是这样的:

add(1, 0) -> add one on position 0
add(2, 1)
add(3, 2)
add(4, 5)
add(5, 6)
print() --> 0-2: 1,2,3 4-5: 4,5
erase(2, 0) -> (length, position)
print() --> 2: 3 4-5: 4,5
目的是在以后缺少的位置添加内容

tyy

您可以使用/来进行此操作。那看起来像

std::unordered_map<int, int> data;
data[0] = 1;
data[1] = 2;
data[2] = 3;
data[5] = 4;
data[6] = 5;

//print() --> 1, 2, 3, 4, 5, 6

data.erase(data.begin(), std::next(data.begin(), 2)) // erase first 2 elements

//print() --> 3, 4, 5, 6
std::无序的地图数据;
数据[0]=1;
数据[1]=2;
数据[2]=3;
数据[5]=4;
数据[6]=5;
//print()-->1、2、3、4、5、6
data.erase(data.begin(),std::next(data.begin(),2))//擦除前2个元素
//打印()-->3、4、5、6

A
std::map
已经实现了您想要的功能,界面有所不同,但您可以根据需要包装它。如果间距较小,则std::vector实现可能更有效。请注意,例如,删除前四个元素将删除键0、1、2和5
data.erase(data.begin()、data.begin()+2)不编译。使用
data.erase(data.begin(),std::next(data.begin(),2))取而代之。@PaulSanders捕捉得很好。固定的。