小编inv*_*ino的帖子

如何重写复杂的C++代码行(嵌套三元运算符)

我一直在查看其他人的代码以进行调试,并发现:

!m_seedsfilter ? good=true : m_seedsfilter==1 ? good=newClusters(Sp) : good=newSeed(Sp);  
Run Code Online (Sandbox Code Playgroud)

这是什么意思?是否有一个自动化工具可以将其呈现为更易于理解的if/else语句?处理这样复杂控制结构的任何提示?

编辑注释:我将其从"不必要的复杂"更改为标题中的"复杂",因为这是一个意见问题.到目前为止,感谢您的所有答案.

c c# c++

24
推荐指数
3
解决办法
2万
查看次数

Z shell中的cd -1,-2,-3等

如何设置Z shell,以便键入cd - 为您提供以前访问过的路径列表,然后cd -1,-2,-3等会将您带到目录?

shell zsh autocomplete zsh-completion

22
推荐指数
2
解决办法
5096
查看次数

C++程序立即使用2 GB的RAM:如何找到罪魁祸首?

我有一个程序,在初始化时查询时,立即使用> 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()函数是自行开发的.

如果可能的话,我想减少程序的内存使用量.

c++ ram memory-management

1
推荐指数
1
解决办法
411
查看次数

循环遍历两个向量,删除1的元素

我有以下玩具代码,旨在从矢量中删除重复项:

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)

我在实际代码中做了稍微复杂的比较,但不想混淆问题.问题是分段错误不可避免地跟随执行:我认为这是因为我正在删除一个元素,然后继续循环遍历同一个向量.

如何使代码工作?这甚至是正确的起点吗?提前致谢

c++ iterator stl vector erase

0
推荐指数
1
解决办法
1586
查看次数

如何在 SGE 中抑制错误和输出日志文件

我在生成大型日志文件的 Sun Grid Engine 批处理系统中运行代码。我可以使用 -o 和 -e 选项选择输出位置,但想知道我是否可以告诉它根本不记录输出。

cluster-computing qsub sungridengine

0
推荐指数
1
解决办法
2224
查看次数