Python列表和c/c++数组

Python list and c/c++ arrays

本文关键字:c++ 数组 列表 Python      更新时间:2023-10-16

例如,如果我们在python中有一个数组arr = [1,3,4]。我们可以通过使用arr.remove(element)arr.pop()来删除数组中的元素,列表就会发生变化,它的长度也会改变,那个元素就不在那里了。是否有一种方法可以做到这一点是C或c++ ?如果是,怎么做呢?

我猜你正在寻找std::vector(或标准库中的其他容器)。

C语言中的数组只是指针,它们不包含其长度的信息。因此,c程序员不仅要保留指针,还要保留它的长度。下面是擦除"C-array"

中的特定值的代码片段
/// return a new length
int removeFromArray( int * array, int arrayLength, int elementToRemove ) {
    int i;
    for ( i = 0; i < arrayLength; i++ ) {
        if ( array[ i ] == elementToRemove ) {
            memmove( & array[ i ], & array[ i + 1 ], arrayLength - i - 1 );
            return arrayLength - 1;
        }
    }
    return arrayLength;
}

在c++中,您可以根据您的里程使用std::liststd::vector

如果你需要在C中实现,你需要编写你的双链表实现,或者如果你不想模拟std::vector,你可以使用memcpyarray indexing

据我所知,您不想或不能使用标准库(顺便问一下,为什么?)。

你可以查看STL实现中的vector模板的代码,看看它是如何实现的。

基本算法很简单。如果要从数组中间删除某项内容,则必须在删除后缩小它。如果你要插入到中间,你必须先把它展开。有时它涉及内存重新分配和移动数组,例如通过memcpy

或者您可以像前面提到的那样实现双链表。但是它不会像数组那样。