我一直在查看其他人的代码以进行调试,并发现:
!m_seedsfilter ? good=true : m_seedsfilter==1 ? good=newClusters(Sp) : good=newSeed(Sp);
Run Code Online (Sandbox Code Playgroud)
这是什么意思?是否有一个自动化工具可以将其呈现为更易于理解的if/else语句?处理这样复杂控制结构的任何提示?
编辑注释:我将其从"不必要的复杂"更改为标题中的"复杂",因为这是一个意见问题.到目前为止,感谢您的所有答案.
如何设置Z shell,以便键入cd - 为您提供以前访问过的路径列表,然后cd -1,-2,-3等会将您带到目录?
我有一个程序,在初始化时查询时,立即使用> 2 GB的RAM.基本上代码是这样的:
#include <blah>
int main() {
cout << get_mem_usage() << endl;
//Lots of things happen, but no significant memory usage
return 0;
}
Run Code Online (Sandbox Code Playgroud)
产量:[2013-02-15 18:38:05.865283] 2147.71 Mb
但是,我链接到许多不同的共享对象文件:我检查了ldd,我链接到58个库,组合的.so大小为66 MB.
我很确定get_mem_usage程序返回正确的值:这些与top和massif输出一致.
我还要提一下,我正在与高能物理分析的ROOT框架联系起来.
我使用的是Linux x86_64,而get_mem_usage()函数是自行开发的.
如果可能的话,我想减少程序的内存使用量.
我有以下玩具代码,旨在从矢量中删除重复项:
void overlap_removal(vector<int> &vec1, vector<int> &vec2) {
for (vector<int>::iterator it1 = vec1.begin(); it1 != vec1.end(); ++it1) {
for (vector<int>::iterator it2 = vec2.begin(); it2 != vec2.end(); ++it2) {
if ((*it1)*(*it2) < 10) {
vec1.erase();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我在实际代码中做了稍微复杂的比较,但不想混淆问题.问题是分段错误不可避免地跟随执行:我认为这是因为我正在删除一个元素,然后继续循环遍历同一个向量.
如何使代码工作?这甚至是正确的起点吗?提前致谢
我在生成大型日志文件的 Sun Grid Engine 批处理系统中运行代码。我可以使用 -o 和 -e 选项选择输出位置,但想知道我是否可以告诉它根本不记录输出。