对于一个小的家庭作业,我应该编写一个简单的合并函数,其原型如下所示:
void merge(int a[], int left_low, int left_high, int right_low, int right_high)
Run Code Online (Sandbox Code Playgroud)
方向说,为简单起见,我们只采用一个阵列,a[]而且right_low = left_high + 1.我们还将最终值存储在a[]传入的原始数组中.实际上,对于具有值的数组,a[] = {1,3,10,4,7,8}它看起来像这样:
a = {1, 3, 10 , 4, 7, 8}
^ ^ ^ ^
left_low left_high right_low right_high
Run Code Online (Sandbox Code Playgroud)
对于这项任务,我们必须通过一些测试.第一个是两个数组之间的简单合并.第二个是教师自己的 merge_sort函数,他调用了一些随机排序的数组.这是我的实现merge():
void merge(int a[], int left_low, int left_high,
int right_low, int right_high) {
int temp[right_high + 1]; // temporary array to store the result
int left_i = left_low, right_i = right_low, temp_i …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Apple Instruments分析大型C++应用程序.我也想这样做,恕不建立在我的项目Xcode工程/工作空间(因为我有依赖性/库/ makefile文件已经成立了一个疯狂的金额).
为此,我启动了仪器Xcode/Contents/Applications/Instruments并选择了时间分析器.对于我的目标,我将其设置为我想要分析的二进制文件.然后我将工作目录设置为我的项目文件所在的位置(以及后续的dSYM文件位于该目录下的文件夹中).我在程序中添加了相关参数,然后点击了记录按钮.
现在它成功记录了运行,我可以看到我的程序在控制台部分正确执行.但是,在我的符号下,我应该看到函数和代码行是那些灰色的符号的错位值.它看起来像这样:
我在网上看到这是因为它无法找到特定应用程序的符号库.我的应用程序的这个dSYM文件位于/working_directory/bin/application.dSYM.所以我去了File -> Symbols,这显示:

所以我点击了sh图标并找到了application.dSYM.但是,如果选中,我会收到一条错误消息:No new libraries to symbolicate: The specified path didn't locate a dSYM for any of the selected libraries.
我不确定如何设置我的代码以便Instruments可以读取符号?
我觉得这应该很简单但无论出于什么原因我都无法让它发挥作用.
我正在尝试创建一个类的实例,可以传递给其他函数并直接编辑.
例如:
main()
{
ClassFoo foo = new ClassFoo();
someFunction(foo);
}
void someFunction(ClassFoo& f)
{
f.add("bar");
}
Run Code Online (Sandbox Code Playgroud)
问题是,在编译时,我最终会遇到此错误.
no viable conversion from 'ClassFoo *' to 'ClassFoo'
ClassFoo foo = new ClassFoo();
^ ~~~~~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)
它还说其他候选构造函数不可行,但是在我的ClassFoo类中我确实有一个如下所示的构造函数:
ClassFoo::ClassFoo()
{}
Run Code Online (Sandbox Code Playgroud)
那么我怎样才能ClassFoo在函数中完成变量的编辑?
我正在使用PHP 的ondrej ppa并运行 Ubuntu 18。运行php -v会给出以下输出:
PHP Warning: PHP Startup: Unable to load dynamic library 'curl.so' (tried: /usr/lib/php/20190902/curl.so (/usr/lib/php/20190902/curl.so: symbol curl_mime_addpart version CURL_OPENSSL_4 not defined in file libcurl.so.4 with link time reference), /usr/lib/php/20190902/curl.so.so (/usr/lib/php/20190902/curl.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP 7.4.2 (cli) (built: Jan 23 2020 11:21:30) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.2, …Run Code Online (Sandbox Code Playgroud) 首先,这个问题不是家庭作业。我目前正在阅读 Robert Lafore 的“数据结构和算法第 2 版”一书。在第 10 章中,我们学习了 2-3-4 棵树,然后被要求编写一个方法来找到这棵树中的最小值。
从概念的角度来看,我理解最小值在哪里。它只是叶子中最左边的数据项。
从编程的角度来看,我对如何实现一种方法来查找此数据项感到有些困惑。我有一个布尔值可以判断节点是否是叶子。所以我最初做的是这样的:
public long minValue() {
Node curNode = root; // current node = root
long min = curNode.getMin();
while(!curNode.isLeaf()) { // while current node is NOT a leaf
curNode = getNextChild(curNode, min);
} // end while
return min;
} // end minValue()
Run Code Online (Sandbox Code Playgroud)
这是做什么的(至少我认为它应该做的是创建一个从根节点开始的 curNode。然后创建一个存储 curNode.getMin 的最小值。getMin() 只是在索引 0 处获取数组中的值(其中应该保持最小值。那么,当当前节点不是叶子时,我们应该从最小值点遍历到下一个子节点。一旦当前节点是叶子,它应该返回最小值。
但这不起作用。有没有人知道如何实现这一点?提示或建议或其他任何东西?
编辑:要查看每个类以及它们如何交互,这里是每个单独类的链接。我把最小值方法放在我的 Tree234 类中
DataItem、Node、Tree234以及程序运行的地方Tree234App
我需要创建一个未排序的二叉树(一个要求是未排序),它保存一个String值作为其值.我的班级大纲看起来像这样:
public class Node {
private String desc;
private Node leftNode = null;
private Node rightNode = null;
public Node(String desc) {
this.desc = desc;
}
public String getDesc() {
return desc;
}
public Node getLeftNode() {
return leftNode;
}
public Node getRightNode() {
return rightNode;
}
}
Run Code Online (Sandbox Code Playgroud)
最终,我希望能够将具有String描述的任何节点替换为具有新描述的新节点(包括具有旧描述的重复节点).
所以我的问题是,Node在创建未排序的二叉树时,处理s 的插入的最佳方法是什么?
我想到了两种方式.第一种方法是只有两种方法,setLeftNode(Node root, String desc)而且setRightNode(Node root, String desc)有人可以用Node自己选择的方式作为根.如果已经有一个左/右Node,那么它将向前推进直到它击中一个没有左边的节点Node.但这可能通过产生超大的高度来引入问题.
我想到的第二种方式是拥有一个专用的根Node,在这种情况下是第一个Node创建的,然后Node …
我目前正在参加决赛,并对其中一个练习问题提出疑问.
问题是:
R(A,B)在属性A为主键的关系上考虑以下两个SQL查询.
查询1: SELECT * FROM R WHERE B > 50 OR B <= 50
查询2: SELECT * FROM R WHERE A > 50 OR A <= 50
哪个是对的?
一个.查询1和2返回所有记录R
湾 查询2返回所有记录R,但查询1可能不会
官方回答说b是正确的,但我想知道原因.我知道主键必须是唯一的,这意味着查询2应该返回每条记录.但即使存在重复B值,查询1也不会返回每条记录吗?
对于家庭作业,我应该实现string.h库的所有22个函数(2fun2handle).我已经失去了很多功能,但在尝试实现strcpy时遇到了一些麻烦.
经过相当多的修改,这是我对该功能的尝试:
char *new_strcpy(char *dest, const char *src){
char *copy = (char *) src;
for(; *copy != '\0'; ++copy, ++dest)
*dest = *copy;
return dest;
}
Run Code Online (Sandbox Code Playgroud)
我认为这样可以正常工作.但是,在通过这样一个简单的示例测试我的代码时:
char src[50], dest[50];
new_strcpy(src, "src");
new_strcpy(dest, "dest");
printf("dest: %s\n", dest);
printf("src: %s\n", src);
Run Code Online (Sandbox Code Playgroud)
我的输出最终看起来像这样:
dest: dest$
src: src$$$$
Run Code Online (Sandbox Code Playgroud)
当它应该看起来像这样:
dest: dest
src: src
Run Code Online (Sandbox Code Playgroud)
在实现这个函数之前,我已经使用指针将src字符串复制到dest字符串而没有问题..所以我不确定为什么现在这样做.有什么明显的东西我做错了吗?还要注意我已经尝试使用while循环并循环直到*copy为空,并且我已经尝试直接循环遍历传入的原始*dest和*src参数.
对于作业,我应该创建两种方法:方法一将输入文件read()转换write()为空输出文件,一次一个字节(缓慢)。
另一种方法将使用char buf[BUFSIZ];where BUFSIZis from <stdio.h>。我们应该这样做read(),并且write()这样做BUFSIZ会让事情变得更快。
我们测试每个方法的输入文件只是一个 Linux 字典 ( /dict/linux.words)。
我已经正确实现了方法一,我一次调用一个字符,将输入文件复制到输出文件read()。write()虽然速度很慢,但至少把所有东西都复制过来了。
我的代码如下所示:
// assume we have a valid, opened fd_in and fd_out file.
char buf;
while(read(fd_in, buf, 1) != 0)
write(fd_out, buf, 1);
Run Code Online (Sandbox Code Playgroud)
然而,对于方法二,当我使用 时BUFSIZ,我无法将每个条目传输到输出文件中。它在条目中失败z,并且不再写入。
所以,我的第一次尝试:
// assume we have a valid, opened fd_in and fd_out file
char buf[BUFSIZ];
while(read(fd_in, buf, BUFSIZ) != 0)
write(fd_out, buf, …Run Code Online (Sandbox Code Playgroud) 我想知道这样做的"正确"方法.基本上,我有一个名为数组的文件列表current.这被声明为一个全局变量,如下所示:current=().我已成功将所有文件放在此数组中.但是现在,我正在通过解析参数来过滤掉这些文件和目录.
例如,为了执行-name '*.pattern'命令,我通过在pattern向process_name()其中执行此:
process_name ()
{
local new_cur=()
for i in "${current[@]}"; do
if [[ "$i" == "$1" ]]; then
new_cur+=("$i")
fi
done
current=( "${new_cur[@]}" )
}
Run Code Online (Sandbox Code Playgroud)
循环结束后,我想"清除"我的current数组.然后我想循环遍历new_cur数组,并基本上使它等于current,或者如果我可以,只是做一些事情$current = $new_cur(虽然我知道这将无效).
我已经尝试在for循环(in process_name())之后执行此操作,但我的数组current实际上并没有改变:
current=( "${new_cur[@]}" )
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?或者正确的方法吗?
c++ ×3
linux ×3
arrays ×2
c ×2
java ×2
2-3-4-tree ×1
algorithm ×1
bash ×1
binary-tree ×1
class ×1
curl ×1
file ×1
instruments ×1
macos ×1
mergesort ×1
minimum ×1
mysql ×1
php ×1
primary-key ×1
profiling ×1
reference ×1
select ×1
shell ×1
sorting ×1
sql ×1
stdio ×1
strcpy ×1
string ×1
system ×1
tree ×1
ubuntu ×1
xcode ×1