[英]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.