我有这个模板调用:
int ia[] = { 9, 2, 5, 1, 8 };
const sav<int> sia( ia, sizeof( ia ) / sizeof( ia[ 0 ] ) );
我想对ia
进行排序,然后创建sia
。我这样尝试过:
template<typename T>
class sav {
public:
sav(T& givenArray,size_t size) {
for( int idx = 0; idx < size; ++idx){
data.push_back(givenArray[idx]);
}
std::sort(data.begin(), data.end());
for(int idx =0; idx<size; ++idx){
givenArray[idx] = data.at(idx);
}
}
private:
std::vector<T> data;
};
但是我不知道在这种情况下我必须在哪里写const
才能使此代码正常工作。
答案 0 :(得分:0)
使此代码有效的一种方法是将T&
更改为T*
。
您实际上是通过将指针传递到数组的第一个元素来“传递”数组,并且还单独传递了长度。
还可以通过引用传递数组(在这种情况下,您不需要单独的length参数,因为length是数组类型的一方。
我不确定您所说的“ const”讨论是什么。