小编dol*_*phy的帖子

检查std :: map中是否存在 - count vs find

因此,似乎有两种通常可接受的方法来确定密钥是否存在于std :: map中:

map.find(key) != map.end()
map.count(key) > 0
Run Code Online (Sandbox Code Playgroud)

一个比另一个更有效吗?具体来说,count()的概念可以被解释为意味着该方法将迭代每个键,计算总计数(并且由于std :: map的定义,总计数将始终为0或1).count()保证在匹配后"停止",以与find()相同的复杂度运行吗?

c++ stl stdmap map

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

操作顺序是否在if表达式内变化?

我最近遇到了一些我认为我立即理解的东西,但是想更多关于它我想了解为什么它按照它的方式工作.

请考虑以下代码.该(x-- == 9)显然得到评估,而(y++ == 11)不是.我的第一个想法是,逻辑上的&&启动,看到表达式已经变为假,并在评估表达式的第二部分之前开始.

我想的越多,我就越不明白为什么会这样做.据我了解,逻辑运算符按优先级顺序低于增量运算.不(y++ == 11)应该评估,即使整体表达已经变为假?

换句话说,操作的顺序是否应该(y++ == 11)if语句实现整个表达式之前进行评估将是错误的?

#include <iostream>
using namespace std;

int main( int argc, char** argv )
{
    int x = 10;
    int y = 10;

    if( (x-- == 9) && (y++ == 11) )
    {
        cout << "I better not get here!" << endl;
    }

    cout << "Final X: " << x << endl;
    cout << "Final Y: " << …
Run Code Online (Sandbox Code Playgroud)

c++ operator-precedence

31
推荐指数
4
解决办法
3150
查看次数

如何继续使用Jenkins声明性管道语法中的失败阶段

我想在Jenkins声明性管道语法中定义多个阶段,这些阶段可以继续通过它们中的任何一个失败.我找不到任何真正重复的现有问题,因为它们都假定或允许脚本化语法.

pipeline {
    agent any
    stages {
        stage('stage 1') {
            steps {
                echo "I need to run every time"
            }
        }
        stage('stage 2') {
            steps {
                echo "I need to run every time, even if stage 1 fails"
            }
        }
        stage('stage 3') {
            steps {
                echo "Bonus points if the solution is robust enough to allow me to continue *or* be halted based on previous stage status"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

为了澄清,我不是在寻找如何在脚本语法中完成此任务.我试图理解这种流控制是否实际上是在声明性语法中支持和形式化的.为此,我将尝试准确定义我正在寻找的内容:

需要

  • 没有尝试/捕获.我不想下载到脚本模式,或者在另一个共享库或脚本块中"包装"我的声明性管道.
  • 没有post step恶作剧.我想要真正的多个阶段,而不是一个post always …

jenkins jenkins-pipeline jenkins-declarative-pipeline

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

(*新)做什么?

我正在尝试解决我的应用程序在activemq-cpp-3.4.0库中遇到的问题,并且我已经逐行跟踪以查看它出错的地方.应用问题本身与这个问题相关; 我遇到了一些我不理解的代码,我希望有人可以解释发生了什么.

跟踪,我发现以下代码(注意:这在技术上是在apr库中):

alloc_socket(new, cont);

/* For right now, we are not using socket groups.  We may later.
 * No flags to use when creating a socket, so use 0 for that parameter as well.
 */
(*new)->socketdes = socket(family, type, protocol);

if ((*new)->socketdes == INVALID_SOCKET) {
    return apr_get_netos_error();
}
Run Code Online (Sandbox Code Playgroud)

我很困惑alloc_socket(new, cont),但具体来说我对(*新)调用的内容感兴趣.这会分配另一个实例this吗?如果是这样,socketdes通过(*new)再次使用来检查存储的值是否是一个谬论,因为这将创建另一个单独的实例?还是我完全偏离轨道?

c new-operator

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