在C ++中用python的list.insert方法的等价物

时间:2018-06-03 16:33:55

标签: c++

在Python中,为了将元素插入到列表中,我们只使用内置方法:insert(index,value)。

e.g。

lst = [1, 3, 4]
lst.insert(1, 2) 
print(lst) 

现在列表变为打印:

[1, 2, 3, 4] 

C ++中是否有内置函数/方法来实现与数组相同的目标?如果没有,构建此插入方法的最简洁的代码是什么?

2 个答案:

答案 0 :(得分:2)

std::list::insert()可以满足您的需求。

但是,链接列表在现代机器上通常是一个表现非常糟糕的数据结构,因为所有指针都会追逐它。通常std::vector会表现得更好,因为它对CPU预取器更友好,即使它具有更差的理论“大O”性能特征。 std::vector也有std::vector::insert()

答案 1 :(得分:1)

您可以使用std::vector例如

std::vector<int> arr = {1, 3, 4};
arr.insert(arr.begin() + 1, 2);
for(auto& val : arr)
    std::cout << val << " ";

此外,您可以使用std::list,看起来相同,但是您无法将{1}添加到std::list<int>::iterator,使用arr.insert(++arr.begin(), 2);