c++ - 通过引用传递 vector

标签 c++

使用普通的 C 数组我会做这样的事情:

void do_something(int el, int **arr)
{
   *arr[0] = el;
   // do something else
}

现在,我想用 vector 替换标准数组,并在这里达到相同的结果:

void do_something(int el, std::vector<int> **arr)
{
   *arr.push_front(el); // this is what the function above does
}

但它显示“表达式必须具有类类型”。如何正确执行此操作?

最佳答案

您可以通过引用传递容器,以便在函数中对其进行修改。其他答案没有解决的是 std::vector 没有 push_front 成员函数。您可以使用 vector 上的 insert() 成员函数进行 O(n) 插入:

void do_something(int el, std::vector<int> &arr){
    arr.insert(arr.begin(), el);
}

或者使用 std::deque 代替分期 O(1) 插入:

void do_something(int el, std::deque<int> &arr){
    arr.push_front(el);
}

关于c++ - 通过引用传递 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15890427/

相关文章:

c++ - 如何在没有 list 的情况下启用视觉样式

c++ - 如何为以下程序使用静态或动态转换

javascript - 将赋值 a.x=3 重构为 setter 方法 a->setX(3) 的脚本

c++ - 虚拟析构函数仅在选定的基地

c++ - Ncurses 用户指针

C++ 内存缓存库

c++ - 使用 psapi.h 在 Microsoft Visual C++ 6.0 中编译一个 exe

c++ - 避免重复代码 : typedef/using a template class that has default parameter (C++14)

c++ - 如何从 C++ 返回 char ** 并使用 ctypes 将其填充到 Python 列表中?

c++ - 使用线程停止一个 Action