小编Wil*_*mKF的帖子

所有end()迭代器都是集合类型的等价物吗?

给定C++中的特定stl集合,end()相同模板化的所有实例的值是否相等?换句话说,以下是否适用于所有stl容器和环境(不仅仅是std :: map)?

std::map<Key, Value> foo(int seed);

std::map<Key, Value> instance1 = foo(1);
std::map<Key, Value> instance2 = foo(2);
std::map<Key, Value>::iterator itr = instance1.begin();
std::map<Key, Value>::iterator endItr = instance2.end(); // Comes from other collection!

for (; itr != endItr; ++itr) {
  // Do something on each key value pair...
}
Run Code Online (Sandbox Code Playgroud)

c++ containers iterator stl language-lawyer

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

如何从Python中的元组中的每个值中减去一个?

我有一个元组创建,zip()我需要从元组中的每个整数中减去一个.我尝试了以下但显然它只适用于列表,所以我如何在Python中调整这个元组呢?

[...]
lower, upper = zip(*table)
lower[:] = [x + 1 for x in lower]
upper[:] = [x - 1 for x in upper]
holes = zip(lower[:-1], upper[1:])
Run Code Online (Sandbox Code Playgroud)

TypeError:'tuple'对象不支持项目分配

大图是我存储了一系列非重叠的分类区间table,我需要得到一系列的洞.例如,我的间隔表可以是:

[ 6,  7]
[ 8,  9]
[14, 18]
[23, 32]
Run Code Online (Sandbox Code Playgroud)

我想计算holes间隔之间:

[10, 13]
[19, 22]
Run Code Online (Sandbox Code Playgroud)

python integer tuples

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

用什么来替换端口上的glob_t和glob()到Windows?

我有一些像这个片段的代码:

#include <glob.h>

glob_t globBuf;
const int result = glob(remoteFileName.c_str(), 0, 0, &globBuf);

if (result == GLOB_NOSPACE) {
  ...
} else if (result == GLOB_NOMATCH) {
  ...
} else {
  ...
}
Run Code Online (Sandbox Code Playgroud)

但我找不到glob.h窗户.

我将在Microsoft Windows上使用什么来提供从Linux移植此代码的等效功能?

c++ windows porting glob

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

如何将 C++ 字符串中的单词大写?

我有一个 std::string 并希望第一个字母大写,其余字母小写。

我可以这样做的一种方法是:

const std::string example("eXamPLe");
std::string capitalized = boost::to_lower_copy(example);

capitalized[0] = toupper(capitalized[0]);
Run Code Online (Sandbox Code Playgroud)

这将产生capitalized

“例子”

但也许有更直接的方法来做到这一点?

c++ boost capitalize stdstring

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

如何检查正在运行的进程以查看它正在使用的共享库?

在Linux上,我有一个使用dlopen()来加载一些共享库的C++应用程序,但我怀疑正在加载的共享库的版本不是我期望的版本,因为我的调试跟踪代码似乎不是执行.

有没有办法检查正在运行的进程来查询它当前打开的所有共享库以及每个库的路径?换句话说,类似于ldd但可以在正在运行的可执行文件上运行的东西,并列出运行时加载的库.

c++ linux runtime dlopen ldd

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

如何使用 boost 日期方面来解析可能没有前导零的字符串?

我想使用boost::date_facetC++03 中的几种变体来规范化某些字符串输入,这些输入可以具有各种不同的美国样式格式,例如:

  • 2012 年 2 月 4 日
  • 2012 年 2 月 4 日
  • 2012 年 2 月 4 日
  • 2012 年 2 月 4 日
  • 2012 年 2 月 4 日
  • 2012 年 2 月 4 日
  • 2012年2月4日
  • 2012年2月4日
  • 2012年2月4日
  • 2012年2月4日

我遇到的问题是如何创建一个date_facet不需要月份或日期前导零的月份或日期。我在 Boost 文档中看到这些标志的条目:

%d   - Day of the month as decimal 01 to 31
%e # - Like %d, but a leading zero is replaced by a space
%m   - Month name as a …
Run Code Online (Sandbox Code Playgroud)

c++ parsing boost date normalization

5
推荐指数
0
解决办法
287
查看次数

'f'后缀对C++库名称的含义是什么?如何加载它?

我正在使用gperftools v2.3rc,并希望使用改进的线程分析功能.发行说明部分说明:

现在实现了Linux上的新cpu分析模式.它为单独的线程设置单独的分析定时器.... [它]是,如果同时启用librt.f被加载并CPUPROFILE_PER_THREAD_TIMERS环境变量设置....

我的C++应用程序与librt.so(-lrt - POSIX.1b Realtime Extensions库)链接,但我之前没有听说过带有.f后缀的库..f意味着什么,我在哪里可以找到这个库,以及如何在我的应用程序中加载它?

c++ posix real-time gperftools

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

为什么execv*()参数与execl*()不一致?

为什么函数族的argv论证而args 族呢?这只是标准中的一个错误,它应该是或者是否有理由在字符串情况下字符串是非const而在显式传递的参数情况下是const?execv*()char * const []execl*()arg0...nconst char *const char * const []

   int execl(const char *path, const char *arg0, ... /*, (char *)0 */);
   int execv(const char *path, char *const argv[]);
   int execle(const char *path, const char *arg0, ... /*,
          (char *)0, char *const envp[]*/);
   int execve(const char *path, char *const argv[], char *const envp[]);
   int execlp(const char *file, const char *arg0, ... /*, (char *)0 */);
   int execvp(const char *file, char *const …
Run Code Online (Sandbox Code Playgroud)

c standards exec argv

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

为什么 select() 会因 EINTR errno 而失败?

我有一个包含此功能的 C++ 应用程序:

int
mySelect(const int fdMaxPlus1,
         fd_set *readFDset,
         fd_set *writeFDset,
         struct timeval *timeout)
{
 retry:
  const int selectReturn
    = ::select(fdMaxPlus1, readFDset, writeFDset, NULL, timeout);

  if (selectReturn < 0 && EINTR == errno) {
    // Interrupted system call, such as for profiling signal, try again.
    goto retry;
  }

  return selectReturn;
}
Run Code Online (Sandbox Code Playgroud)

通常,这段代码工作得很好,但是,在一个例子中,我看到它进入了一个无限循环,代码select()不断失败EINTR errno。在这种情况下,调用者已将超时设置为零秒和零微秒,这意味着不要等待并select()立即返回结果。我认为EINTR只有在信号处理程序发生时才会发生,为什么我会一遍又一遍地获得信号处理程序(超过 12 小时)?这是 Centos 5。一旦我将其放入调试器以查看发生了什么,经过几次迭代后,代码返回而没有 EINTR。请注意,被检查的 fd 是一个套接字。

我可以为上述代码添加重试限制,但我想先了解发生了什么。

c++ select eintr infinite-loop

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

JavaScript switch 语句是线性的还是恒定时间的?

我的网站上有以下 JavaScript,以便在执行某些特定搜索时,答案会被硬编码到特定页面:

function redirect() {
    var input = document.getElementById('searchBox').value.toLowerCase();

    switch (input) {
      case 'rectangular':
        window.location.replace('http://www.Example.com/Rectangular/');
        break;
      case 'elephant':
        window.location.replace('http://www.Example.com/Elephants/');
        break;
      case 'coils':
        window.location.replace('http://www.Example.com/Parts/');
        break;
      default: // No keyword detected: submit the normal search form.
        return true;
        break;
    }
    return false; // Don't let the form submit
}
Run Code Online (Sandbox Code Playgroud)

我想知道 JavaScript 中的搜索语句是否与 case 语句的数量或恒定时间呈线性关系?如果是线性的,是否有更好的方法来编写此代码,以便无论我编码的特殊情况有多少,它都是恒定时间?

javascript time-complexity switch-statement constant-time

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