由于存在一个错误,我刚刚发现该代码可以在Visual Studio 17以及其他编译器上正常编译。现在我很好奇为什么?
#include <iostream>
#include <string>
std::string foo(){
return nullptr;
}
int main(){
auto s = foo();
std::cout << s << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
我可以想象这是因为std::basic_string可以用a调用c'tor char*,同时返回从ptr到的隐式转换std::string(使用NULLas作为参数,然后变为poof)。我走对了吗?
在阅读一些StackOverflow问题时,我偶然发现了这个问题,但是找不到令人满意的答案。
假设我们有一个array Alength ,以随机方式n包含其索引,从0到n-1。是否可以重新排列数组,使其结果A[ A[i] ]具有恒定的O(1)内存开销?
例:
A = [ 3, 2, 0, 1 ]
rearrange( A )
A = [ 1, 0, 3, 2 ]
Run Code Online (Sandbox Code Playgroud)
如果可能,该算法的概述将是不错的选择。否则,解释为什么这是不可能的。由于就地排序是一件很重要的事情,因此可能类似。
澄清:如果您没有内存限制,该算法很简单:
A = [ 3, 2, 0, 1 ]
A_r = Array_of_size( A )
for i = 0 to Arraysize - 1
A_r[ i ] = A[ A[i] ]
Run Code Online (Sandbox Code Playgroud)
结果 A_r = [ 1, 0, 3, 2]
我们将jenkins管道dsl用于我们的职位描述。现在我们有了这样的东西:
pipeline {
agent none
options {
timestamps()
}
environment {
//SOME ENV VARS
}
stages {
// more stages
stage('stage1'){
when {
expression { env.BRANCH_NAME == 'master' }
}
agent { label 'slave1' }
steps{
//doing stuff
}
}
}
Run Code Online (Sandbox Code Playgroud)
构建过程中的一个阶段仅应在构建master分支时运行,您可以考虑部署作业或朝该方向进行的工作。问题是,我们带有特定标签的代理商资源有限。当我们建立其他分支时,该作业仍会调用slave1代理,然后在检查该分支不是主节点之后跳过该阶段。这很不好,因为当所有slave1代理都在处理master分支作业时,其他作业将不得不等待slave1代理可用,以检查它是否确实需要运行该阶段。
jenkins管道DSL是否有任何方法可以跳过该阶段而无需等待slave1代理确定分支?