Python列表和c/c++数组
Python list and c/c++ arrays
例如,如果我们在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::list
或std::vector
如果你需要在C
中实现,你需要编写你的双链表实现,或者如果你不想模拟std::vector
,你可以使用memcpy
和array indexing
据我所知,您不想或不能使用标准库(顺便问一下,为什么?)。
你可以查看STL实现中的vector模板的代码,看看它是如何实现的。
基本算法很简单。如果要从数组中间删除某项内容,则必须在删除后缩小它。如果你要插入到中间,你必须先把它展开。有时它涉及内存重新分配和移动数组,例如通过memcpy
。
或者您可以像前面提到的那样实现双链表。但是它不会像数组那样。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 使用指针从C++中的数组中获取最大值
- C++使用整数的压缩数组初始化对象
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '