阵列通过和返回
Array passing and returning
我想知道..每当我处理数组,当我必须剪切或排序或任何东西时,然后将其返回,我将其传递给void函数,如 f(array, length, newarray)
在函数声明中,我有void f(T *array, int length, T *&new array)
。有更好的方法吗?
这是一些代码,我想从数组中删除重复序列:
template<class T>
void eliminate(T *niz, int duzina, T *&podniz)
{
int ind;
podniz = new T[duzina];
for (int i = 0; i<duzina; i++)
{
ind = 0;
for (int j = i; j<duzina; j++)
{
if (niz[i] == niz[j])ind++;
}
if (ind == 1)podniz[nova++] = niz[i];
}
}
如评论中已经指出的,您确实需要std::vector
。
代码的主要问题是,实际上无法确定有多少输出元素是初始化的。访问非初始化的元素是不确定的行为,因此您将定时炸弹返回给呼叫者。
使用std::vector<T> eliminate(std::vector const&)
,没有这种疑问。返回的向量完全具有.size()
元素。
向量也是例外安全。如果T
的复制构造函数抛出,例如,您的代码将泄漏内存,例如在std::bad_alloc
。
当然。您可以使用指针并通过引用该功能传递数组。然后操纵数组并使用void类型从函数返回,即无需通过引用传递数组。
相关文章:
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- 什么时候在C++中返回常量引用是个好主意
- 你能重载对象变量名本身返回的内容吗
- 为什么 Serial.println(<char[]>);返回随机字符?
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 返回C 中2D阵列的对角线元素总和
- 阵列通过和返回
- 通过从当地的C风格阵列中返回指针来获取一个悬空的指针
- OPENCL-如何使辅助功能返回阵列并将内存的部分从恒定内存空间转移到私有
- 返回二维阵列
- 求和大阵列返回C/C 中的0
- 问题创建和返回锯齿状阵列(错误std :: bad_array_new_length)
- 如何返回通过memcpy函数修改的两个阵列
- 阵列指针返回垃圾
- 如何从函数返回多维垫阵列
- 动态字符串阵列构造函数和空返回
- 静态数组成员的尺寸返回指针的大小,而不是阵列
- 有没有办法将C 中的两个阵列连接并返回它们
- 在函数中定义一个动态数组,然后返回数组元素。如何释放阵列的内存?
- 在c++中传递并返回2D阵列