小编Wil*_*mKF的帖子

测试迭代器是否指向最后一项?

我有一个由std :: find()生成的stl迭代器,并希望测试它是否是最后一个元素.写这个的一种方法如下:

mine *match = someValue;
vector<mine *> Mine(someContent);
vector<mine *>::iterator itr = std::find(Mine.begin(), Mine.end(), match);

if (itr == --Mine.end()) {
  doSomething;
}
Run Code Online (Sandbox Code Playgroud)

但在我看来,递减end()迭代器是在寻求麻烦,例如如果向量没有元素,那么它将是未定义的.即使我知道它永远不会是空的,它仍然看起来很难看.我想也许rbegin()是可行的方法,但我不确定将前向迭代器与反向迭代器进行比较的最佳方法.

c++ iterator stl

30
推荐指数
4
解决办法
4万
查看次数

抛出一个catch省略号(...)重新抛出C++中的原始错误?

如果在我的代码中我有以下代码段:

try {
  doSomething();
} catch (...) {
  doSomethingElse();
  throw;
}
Run Code Online (Sandbox Code Playgroud)

抛出会重新抛出默认省略号处理程序捕获的特定异常吗?

c++ exception ellipsis throw

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

如何将当前目录捕获为make变量中的绝对路径名?

我想在GNUmake文件运行期间将当前目录放入make变量中.

这样做的语法是什么?像这样的东西?

DIR := $(PWD)
Run Code Online (Sandbox Code Playgroud)

makefile gnu-make

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

在FreeBSD v8.1上,Linux的'free'命令相当于什么

什么相当于FreeBSD v8.1上的Linux'免费'命令?

我从我的应用程序中调用"免费"并在我的应用程序的日志文件中报告结果.移植到FreeBSD v8.1时会有什么替代品?

以下是Linux上的"免费"示例:

[centos4x32 ~] free
             total       used       free     shared    buffers     cached
Mem:        774452     733044      41408          0      98040     328880
-/+ buffers/cache:     306124     468328
Swap:      2031608        224    2031384
Run Code Online (Sandbox Code Playgroud)

linux memory porting freebsd free-command

29
推荐指数
3
解决办法
5万
查看次数

调用exit()时是否运行析构函数?

可能重复:
exit()或异常会阻止调用范围结构析构函数吗?

在C++中,当应用程序调用exit(3)时,堆栈上的析构函数应该运行以展开堆栈吗?

c++ destructor exit

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

编译器版本号的gcc预定义宏是什么?

我遇到了一个gcc v3.4.4的错误,并且在我的代码中添加#ifdef来解决该版本编译器的bug.

什么是GCC编译器预处理器预定义宏来检测编译器的版本号?

flags gcc preprocessor g++ version

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

是否有gdb命令来完成循环结构?

在gdb中,我有一个finish命令可以轻松地完成一个函数框的执行,通常在调试器中遍历代码时,在查看循环的几次迭代之后,我想完成循环并继续在它之后行走.目前,我通过在循环后的第一行设置断点来实现这一点continue,但是,如果有一个简单的gdb命令具有相同的效果但不需要设置断点,那么它将非常方便.后来清理了.

无论如何在gdb中完成正在执行的当前循环的执行?

debugging gdb loops walkthrough

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

如何使用std :: string替换所有出现的两个字符的一个字符?

是否有一个很好的简单的方法,以取代所有出现"/"std::string"\/"逃脱的所有斜线std::string

c++ replace escaping stdstring

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

如何从std :: vector <string>构造一个std :: string?

我想建立std::string一个std::vector<std::string>.

我可以使用std::stringsteam,但想象有一个更短的方式:

std::string string_from_vector(const std::vector<std::string> &pieces) {
  std::stringstream ss;

  for(std::vector<std::string>::const_iterator itr = pieces.begin();
      itr != pieces.end();
      ++itr) {
    ss << *itr;
  }

  return ss.str();
}
Run Code Online (Sandbox Code Playgroud)

我怎么可能这样做?

c++ stl string-concatenation stringstream stdstring

24
推荐指数
5
解决办法
4万
查看次数

catch块中抛出的异常会被后来的catch块捕获吗?

考虑以下C++代码:

try {
  throw foo(1);
} catch (foo &err) {
  throw bar(2);
} catch (bar &err) {
  // Will throw of bar(2) be caught here?
}
Run Code Online (Sandbox Code Playgroud)

我希望答案是否定的,因为它不在try块中,我在另一个问题中看到Java的答案是否定的,但是想确认C++也没有.是的,我可以运行一个测试程序,但是我想知道我的编译器有bug的远程情况下的行为的语言定义.

c++ exception try-catch rethrow

23
推荐指数
2
解决办法
1万
查看次数