我知道以下内容:
我确信还有更多我没有使用过甚至没有听过的; 快速谷歌搜索显示Gopt,argtable和Optlist.
就个人而言,我argp最喜欢,并且我使用getopt/ 编写的每个程序getopt_long(超出某个复杂的基线)都已转换为使用argp.它比所有GNU风格的约定更加广泛可用popt,比getopt_long文档更强大,更灵活.在缺点方面,它远非最容易使用(由于非常灵活),并且支持它的代码非常冗长(C中的许多内容也是如此).
你用了什么,为什么?
是的,我的意思是C而不是C++.有大量的C++解析器,但我不使用C++.
约翰米利金指出,popt不再维持.我列出它是因为许多程序仍在使用它 - 包括AbiWord,rpm,rsync和samba - 尽管Gnome努力迁移.但我现在也添加了一个指向Glib的参数解析器的链接.
对于C++参数解析,请参阅问题C++有哪些参数解析器库?
在我的工作场所,交通拦截器/防火墙越来越糟糕.我无法连接到22端口的家用机器,缺少ssh访问让我感到难过.我以前能够通过将其移动到端口5050来使用SSH,但我认为最近的一些过滤器现在将此流量视为IM并将其重定向到另一个代理,也许.这是我最好的猜测; 在任何情况下,我的ssh连接现在在我登录之前终止.
这些天我一直在通过HTTPS使用Ajaxterm,因为端口443仍然没有被干扰,但这远非理想.(Sucky终端仿真,缺少端口转发,我的浏览器以惊人的速度泄漏内存......)我尝试设置mod_proxy_connect在上面mod_ssl,CONNECT localhost:22 HTTP/1.1我想通过HTTPS 发送请求,然后我会全部设置.可悲的是,这似乎不起作用; HTTPS连接有效,直到我完成发送请求为止; 然后SSL疯了.看起来好像mod_proxy_connect接管整个连接而不是继续通过mod_ssl,混淆了HTTPS客户端.
有没有办法让这个工作?我不希望通过纯HTTP执行此操作,原因如下:
要求:
DAG:我已经向我指出了隧道SSH over HTTP(S),但它没有帮助:在文章的最后,他们提到了错误29744 - CONNECT无法通过现有的SSL连接工作,从而阻止通过HTTPS进行隧道传输,我遇到的问题.此时,我可能正在查看一些CGI脚本,但如果有更好的解决方案,我不想将其列为要求.
维基百科在A*复杂性上说如下(链接在这里):
比时间复杂度更有问题的是A*的内存使用率.在最坏的情况下,它还必须记住指数数量的节点.
我没有看到这是正确的,因为:
假设我们探索节点A,后继B,C和D.然后我们将B,C和D添加到开放节点列表中,每个节点都附带一个A的引用,我们将A从开放节点移动到关闭节点.
如果在某个时候我们找到另一条到B的路径(比如通过Q),这比通过A的路径更好,那么所需要的只是将B的引用改为A以指向Q并更新其实际成本g(在逻辑上f).
因此,如果我们在节点中存储其名称,其引用节点名称及其g,h和f分数,那么存储的最大节点数量是图表中的实际节点数量,不是吗?我真的不明白为什么算法在任何时候都需要在内存中存储一定数量的节点,这些节点指向最佳(最短)路径的长度.
有人可以解释一下吗?
编辑正如我现在理解的那样阅读你的答案,我是从问题的错误观点推理出来的.我认为给定的图是理所当然的,而指数复杂性是指仅由"分支因子"定义的概念图.
algorithm complexity-theory artificial-intelligence graph a-star
我正在用bash编写一个makefile,我有一个目标,我试图找到一个文件是否存在,即使我认为语法是正确的,我仍然给我一个错误.
这是我试图运行的脚本
read:
if [ -e testFile] ; then \
cat testFile\
fi
Run Code Online (Sandbox Code Playgroud)
我正在使用制表符,这不是问题.
错误是(当我输入:"make read")
if [ -e testFile] ; then \
cat testFile \
fi
/bin/sh: Syntax error: end of file unexpected (expecting "fi")
make: *** [read] Error 2
Run Code Online (Sandbox Code Playgroud) 我有一位同事在C中检查这样的代码(语法#1):
(*(*(*p_member).p_member).p_member).member
Run Code Online (Sandbox Code Playgroud)
当我问他为什么不使用 - >(语法#2)时:
p_member->p_member->p_member->member
Run Code Online (Sandbox Code Playgroud)
他得到了真正的防守,指出语法#2比#1更复杂......我最终改变了他的代码,因为我不得不修改它,不能读它,然后他就疯了,我居然感动呢?
SO社区更喜欢哪种语法?两者都有效,但我发现语法#2更具可读性.
由于问题是主观的,我将此设置为社区维基.
我正在处理的项目需要在关闭之前序列化数据结构,并在重新启动时从此序列化数据恢复其状态.
去年,我们正在为.NET 1.1构建,并遇到了一个棘手的问题
这个特定的问题是通过禁止特定的软件升级而"解决"的,现在我们的目标是.NET 2.0框架(因此我们不能在1.1上运行)应该不是问题.
这个序列化再次在2.0和更新的框架之间再次发生变化的可能性有多大?如果我们使用<supportedVersion>将代码修改为2.0.50727,那么2.0.50727.1434和2.0.50727.nnnn(未来某个版本)之间的变化几率是多少?被序列化的数据结构是来自标准类库的数组,映射,字符串等.
此外,是否可以保证即使在进一步的.NET升级后,也将始终安装2.0.50727框架?微软文档的指针欢迎.
默认情况下,gcc/g ++仅显示包含行号的警告消息.我正在寻找g ++或gcc将构建警告消息与警告ID相关联的选项,以便可以轻松识别警告消息(无需解析).还有更多选项可以获得更详细的警告信息吗?(虽然我认为每个警告信息本身都是解释性的,但只是好奇)
谢谢.
当我正在思考在以下情况下发生的事情的时候,我只是对托尼·莫里斯对猫咪的优秀演习进行了喋喋不休的讨论 ......
def cata[X](some: A => X, none: => X): X
Run Code Online (Sandbox Code Playgroud)
现在让我称这个方法如下:
def isDefined: Boolean = cata( _ => true, false)
Run Code Online (Sandbox Code Playgroud)
我想知道的类型是否inferencer确定的类型的_ => true要A => Boolean或Any => Boolean.由于输入参数Function1是反变量的事实,以下两个编译都很好:
def isDefined: Boolean = cata( (_: A) => true, false) //#1
def isDefined: Boolean = cata( (_: Any) => true, false) //#2
Run Code Online (Sandbox Code Playgroud)
所以问题是,类型推断器是出现#1还是#2?
我有一个名为Cal的类,它是.cpp和.h对应的
头文件有
class Cal {
private:
int wa[2][2];
public:
void do_cal();
};
Run Code Online (Sandbox Code Playgroud)
.cpp文件有
#include "Cal.h"
void Cal::do_cal() {
print(wa) // where print just itterates and prints the elements in wa
}
Run Code Online (Sandbox Code Playgroud)
我的问题是如何初始化数组wa?我似乎无法让它工作.
我尝试过:
int wa[2][2] = {
{5,2},
{7,9}
};
Run Code Online (Sandbox Code Playgroud)
在头文件但我得到错误说我不能这样做因为它反对iso..something.
试图wa在构造函数中初始化数组,但也没有工作..我错过了什么?
谢谢
我必须维持一个自2004年以来没人接触过的计划.
class CSolver
{
...
ClauseIdx add_clause (int * lits, int n_lits);
}
void and2 (CSolver & solver)
{
vector <int> lits;
...
solver.add_clause(lits.begin(), lits.size());
}
Run Code Online (Sandbox Code Playgroud)
编译器抱怨说:
错误:没有匹配函数来调用'CSolver :: add_clause(__ gnu_cxx :: __ normal_iterator <int*,std :: vector <int,std :: allocator <int >>>,size_t)'
我试着去投它
solver.add_clause((int*)lits.begin(), lits.size());
Run Code Online (Sandbox Code Playgroud)
但仍有一个抱怨:
错误:从类型'__gnu_cxx :: __ normal_iterator <int*,std :: vector <int,std :: allocator <int >>>>'输入无效,以输入'int*'
我想快速解决这个问题,因为改变CSolver的界面会导致改变整个程序.
提前致谢.