将指针容器作为参数传递给const

时间:2016-01-21 23:59:58

标签: c++ stl const

我有很多函数将const对象的指针容器作为参数。我需要使用指向非const对象的指针容器来调用这些函数。我似乎记得在某处读到这是不允许的。有没有办法解决这个问题,而不是编写2个函数副本?

示例(此代码无法编译):

#include <vector>
#include <iostream>
using namespace std;

void fn(vector<const int *> par) {
    cout<<"Function with const ptrs\n"<<endl;
}

int main()
{
    vector<int *>v;
    fn(v);
}

2 个答案:

答案 0 :(得分:1)

您可以初始化一个新的矢量。

#include <vector>
#include <iostream>
using namespace std;

void fn(vector<const int *> par) {
    cout << "Function with const ptrs\n" << endl;
}

int main()
{
    vector<int *>v;
    fn(vector<const int *>(v.begin(), v.end()));
}

答案 1 :(得分:1)

如果是一个选项,请考虑使您的函数采用范围,例如:

template<typename t_iterator>
void fn(t_iterator beg_iter, t_iterator end_iter) {
    for(; beg_iter != end_iter; ++beg_iter) {
        // do something
    }
}

此操作应在vector<int*>vector<const int*>以及deque<int*>等操作