簡體   English   中英

將指向const的指針的容器作為參數傳遞

[英]Passing containers of pointers to const as arguments

我有很多函數將指向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);
}

您可以初始化一個新向量。

#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()));
}

如果可以選擇,請考慮使函數采用范圍,例如:

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*>等上運行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM