首页 > 解决方案 > 是否可以将 std::deque 的成员函数作为参数传递?

问题描述

我想使用push_frontpush_back取决于用户输入。是否可以将其包含在函数参数中,然后编写一个函数以节省内存?

标签: c++functionc++11member-functionsstddeque

解决方案


是否可以将其包含在函数参数中?

没有。你不能。

在这个讨论中可以找到一个很好的解释: 我可以获取标准库中定义的函数的地址吗?


但是,可以通过明确告诉函数应该在哪里插入来解决问题。

#include <iostream>
#include <deque>

enum class To{ front = 0, back };

void func(std::deque<int>& dq, const int value, const To where)
{
    if (where == To::front)
    {
        dq.push_front(value);
        // code
    }
    else if(where == To::back)
    {
        dq.push_back(value);
        // code
    }
}

而你称之为

std::deque<int> dq;
func(dq, 1, To::back);
func(dq, 2, To::front);

推荐阅读