如何在动态数组上使用搜索函数
How can I use a search function on a dynamic array?
我试图在我创建的动态数组上使用线性搜索函数,但后来我计算机科学课的助教告诉我们,大多数搜索函数都使用常量数组。
有没有什么方法可以编辑我的动态数组,使其成为contant?或者也可以制作一个使用动态数组的搜索函数(并且不会给出错误?(。我将简要了解我的代码:
我使用从文件中读取的行动态地创建一个数组,然后将每一行动态地分配给一个列数组。
char ** domain[] = new char * [rows];
for(int i = 0; i < rows; i++)
{
*domain = new char[columns];
domain++;
}
我们学习的搜索函数类型是:`
char searchArray( const char list[], char letter, int maxSize)
{
>code goes here
}
有没有其他方法可以使用接收动态多维数组的搜索函数?
作为对评论的回应,我不能使用矢量。这是我们使用普通数组的任务。我还没有学会如何使用矢量。
在行
char ** domain[] = new char * [rows];
CCD_ 1尝试制作CCD_。如果编译器没有抱怨[]
中没有有效的数组大小,那么您将拥有一个3D结构。对于2D结构,您只需要普通的旧char **
,因此
char ** domain = new char * [rows];
填写内部尺寸的回路是正确的,只是它失去了对domain
起点的跟踪
for(int i = 0; i < rows; i++)
{
*domain = new char[columns];
domain++;
}
应该是类似的东西
char ** temp = domain;
for(int i = 0; i < rows; i++)
{
*temp = new char[columns];
temp++;
}
为了保留起点,但在这种情况下,数组表示法可能是更聪明、更容易阅读的选项。
for(int i = 0; i < rows; i++)
{
domain[i] = new char[columns];
}
转到searchArray
。它需要知道它得到了两个维度(const char **
(,并且有两个最大大小(maxRow
和maxColumn
(。它看起来有点像
char searchArray(const char ** list,
char letter,
int maxRow,
int maxColumn)
{
>code goes here
}
这里的代码是您的问题,但可能是两个嵌套的char ** domain[]
0循环,迭代到maxRow
和maxColumn
,并在找到letter
时返回。
但是。。。为什么要返回char
?返回数组中的位置要有用得多。我们可以使用std::pair
,但如果std::vector
是禁区,那么pair
可能也是禁区。请考虑以下内容:
struct coord
{
int row;
int column;
};
coord searchArray(const char ** list,
char letter,
int maxRow,
int maxColumn)
{
coord location;
>code goes here
return location;
}
如果找不到项目,请将row
和column
设置为不可能得到的值,如-1,这样您就可以轻松地测试未找到的情况。
除非您想<脏话已删除>用你老师的大脑
以上内容并未构建2D阵列。您无法在C++中获得动态分配的2D数组。您所拥有的是一个数组。这有几个缺点,看看把一个缝合在一起的所有工作,电脑喜欢它,因为事情是直线的。数组数组没有。每一个不同的分配都可能是内存中完全不同的地方,迫使程序跳来跳去,等待并加载不同的内存块。有时,程序会花更多的时间坐在那里等待找到和加载东西,而不是花在实际工作上。这太糟糕了。
解决方案是制作一个1D阵列,使其看起来像2D阵列。下面是一个来自C++常见问题的例子
从这个例子中,你会学到很多巧妙的东西,尤其是RAII和三规则,没有这两个概念,你就无法编写非平凡的高质量C++代码。
- 如何在动态数组上使用搜索函数
- 为什么二叉搜索函数会抛出错误?
- 这是在传递 int num 时创建搜索函数的正确方法吗?使用链表库
- 如何将Z3_ast导出为二进制以及如何搜索函数名称?
- 替代搜索函数和哈希向量<struct>C++
- 返回 std::p air<const CustomClass &, bool> 用于搜索函数中的失败情况,当 CustomClass 是抽象基类时
- 我如何使用此二叉搜索函数的修改后的最大/最小值创建新数组
- 有没有办法在 UBUNTU 中的大型库文件夹(.a 和 .so 文件)中搜索函数
- BST搜索函数在一台机器上返回true,在另一台机器中返回false
- 使用cctype库搜索函数,以查找某个范围内的数字字符数
- 在元组中搜索函数的参数
- C++有序链表搜索函数算法逻辑
- 二叉搜索树 - 搜索函数返回对象 (C++)
- 关于修复对向量的线性搜索函数的调用的建议
- 搜索函数返回相同的,而不考虑二叉搜索树中存在的项目
- C++中的二进制搜索函数返回无限循环
- 具有两个字符串向量的搜索函数
- 使用哈希表中的派生类搜索函数
- C++二进制搜索函数
- 为什么我的应用程序在错误的DLL中搜索函数