问题列表 - 第318095页

奇怪的不等式字符 Visual Studio

!=如何在 Visual Studio for C# 中将此字符更改为此字符?有人知道该怎么做吗?预先非常感谢。

在此输入图像描述

很抱歉,如果这不是一个正确的问题,但我在互联网上没有找到任何关于如何做到这一点的答案。

c# visual-studio

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

指向字符串的Char指针

谁能解释一下为什么这段代码不起作用,这里是新手。

#include <stdio.h>

int main()
{
    char * ptr = "hello";
    int i, cnt =0;
    while(ptr[i] != NULL)
    {
        i++;
        cnt++;

    } 
}
Run Code Online (Sandbox Code Playgroud)

谢谢 !

试图理解这一点,ptr 指向包含 hello 的字符数组,如 'h'、'e'、'l'、'l'、'o'、'\0'。我正在尝试获取它的长度。

c

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

构造函数,即不是特殊的成员函数,仍然是成员函数吗?

来自C++标准工作草案:

默认构造函数 ([class.default.ctor])、复制构造函数、移动构造函数 ([class.copy.ctor])、复制赋值运算符、移动赋值运算符 ([class.copy.assign]) 和预期析构函数 ([class .dtor])是特殊成员函数。

https://eel.is/c++draft/special

给出以下代码:

struct S {
    S(int, float, double);
};
Run Code Online (Sandbox Code Playgroud)

在我的理解中, 的构造函数S不是特殊的成员函数,因为它既不是默认构造函数,也不是复制构造函数,也不是移动构造函数

我想知道标准是否仍然认为构造函数是成员函数(或“唯一”的东西)。

我阅读了 C++ 工作草案中有关成员函数、特殊成员函数和构造函数的部分,但没有找到任何合理的答案来回答这个问题。我还查看了 StackOverflow,但大多数答案都指出所有构造函数都被视为特殊成员函数,这似乎与标准相矛盾。

c++ constructor function member-functions language-lawyer

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

函数模板通用引用错误

我正在尝试编写一个函数模板,该模板采用通用引用作为参数,以便它可以接受左值引用和右值引用。

当我写下这个:

template <typename Type>
concept is_number = std::integral<Type> || std::floating_point<Type>;

template <typename Type1, typename Type2>
    requires is_number<Type1> && is_number<Type2>
[[nodiscard]] inline auto add(Type1&& num1, Type2&& num2) noexcept
{
    return num1 + num2;
}

const std::int64_t num1 { 50 };
const double num2 { 30.6 };

std::cout << add(num1, num2) << std::endl;
Run Code Online (Sandbox Code Playgroud)

该代码按预期工作。add() 函数模板成功推导为

[[nodiscard]] inline double add(const std::int64_t& num1, const double& num2);
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试这段代码时:

template <typename Type>
    requires is_number<Type>
[[nodiscard]] inline auto absolute(Type&& number) noexcept
{
    return number < 0 …
Run Code Online (Sandbox Code Playgroud)

c++ templates c++20

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

具有子图内和子图之间节点水平对齐的DiagrammeR流程图

我需要创建一个流程图,下面是一个可重现的示例R

    library(DiagrammeR)
    library(DiagrammeRsvg)
    library(magrittr)
    library(rsvg)
    library(tidyverse)

    flowchart = grViz("digraph flowchart {
                  
      graph [rankdir = LR]

      subgraph cluster_one {
      peripheries=1

      label = 'Procedure 1';
      style = solid;
      fontname = 'helvetica-bold';
      
      node [fontname = Helvetica, shape = circle,  style=solid]
      R1 [label = '1']; R2 [label = '2']; R3 [label = '3']; R4 [label = '4']
      
      node [fontname = Helvetica, shape = rectangle, style=filled] 
      A1 [label = 'A1']
      node [fontname = Helvetica, shape = rectangle, style=filled] 
      A2 [label = 'A2']
      node …
Run Code Online (Sandbox Code Playgroud)

r graphviz diagrammer

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

算法的 Haskell 复杂度

我在 Codeforces 上遇到一个简单的问题,问题是这样的。我想讨论的不是问题,而是我们使用的语言,在本例中是 Python3 和 Haskell。

具体来说,我的算法有两个版本,一个在 Haskell 中,另一个在 Python3 中。两者都采用函数式编程风格。代码看起来像这样

Python3

from operator import add
from itertools import accumulate
from functools import reduce
 
 
def floss(l):
    def e(u):
        a, b = u
        return b if a % 2 == 1 else -b
 
    return map(e, enumerate(l))
 
 
def flock(l):
    return accumulate(l, add)
 
 
def search(l):
    b = zip(l, l[1:])
 
    def equal(u):
        x, y = u
        return x == y
 
    c = any(map(equal, b))
    return 'YES\n' if c else 'NO\n'
 
 
def main(): …
Run Code Online (Sandbox Code Playgroud)

haskell

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

使用“空”字符数组中的构造函数时,C++ 错误的 std::string 长度

我在不同的编译器上测试了这个代码片段,但总是得到相同的结果,但我就是不明白为什么。

unsigned char buffer[0x4000] = {0};
string strText((char*)buffer, 0x4000);  
cout << "strlen((char*)buffer) = " << strlen((char*)buffer) << endl;;
cout << "strText.length() = " << strText.length() << endl;
Run Code Online (Sandbox Code Playgroud)

输出是:

strlen((char*)buffer) = 0
strText.length() = 16384
Run Code Online (Sandbox Code Playgroud)

我正在std::stringunsigned char数组创建一个变量(您也可以使用有符号的字符数组,结果是相同的)。在将变量传递给字符串构造函数之前,数组内容被“清零”(根据情况使用 memset 或 C++ 数组初始化)。

如果使用 C 样式函数获取字符串长度strlen((char*)buffer),则结果如预期为“0”。

如果使用方法获取字符串对象的长度,则string::length()该值等于字符串构造函数中传递的数组大小(本例中为 16384)。为什么?

另外,作为副作用,如果使用打印字符串对象的内容,std::cout您会得到一个非常长的空字符串(所有“0”都被“空格”替换)。

我是否应该对 std::string 对象执行一些额外的操作以获得我期望的长度(0)?

谢谢

c++ arrays string string-length

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

Firebase Cloud Functions - 函数外部的 ENV 变量

我正在尝试使用process.env云函数定义之外的值,但是undefined当我没有在云函数内部使用变量时,它就会得到。

functions/.env

OPENAI_API_KEY=MY_API_KEY
Run Code Online (Sandbox Code Playgroud)

functions/index.js

const functions = require("firebase-functions");
const admin = require("firebase-admin");
const { ChatOpenAI } = require("@langchain/openai");

console.log(process.env.OPENAI_API_KEY); // undefined

const llm = new ChatOpenAI({
  openAIApiKey: process.env.OPENAI_API_KEY, // undefined
});


exports.testCall = functions.https.onCall((data, context) => {
  console.log(process.env.OPENAI_API_KEY); // defined with proper value  
});
Run Code Online (Sandbox Code Playgroud)

我是 firebase 和云函数的新手,所以也许有某种我不理解的范例,但我对如何在函数之外使用 env 变量感到困惑。

当我启动 firebase 模拟器时,它显示“已从 .env 加载环境变量”。然而,它仅在函数运行时可用。

javascript node.js firebase google-cloud-functions dotenv

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

带增量的 2 补码是否违反了 c++17 中的执行顺序规则,但不违反 c++14 中的执行规则?

这可能是“ 101”级别的问题,但有一些相关的痛苦,所以我会要求评论以保持自信。

我有一些遗留代码支持返回到及之前的这一行:

iTmp = ~iTmp++;
Run Code Online (Sandbox Code Playgroud)

在代码更改为之前,此方法 100% 有效。更改为后,它会计算出不同的值,但并非总是如此。这取决于该行在代码中的位置,是先执行 2 的补码还是先执行增量。

另外,如果您尝试强制使用括号,则会出现编译器错误:

iTmp = (~iTmp)++;

error C2105: '++' needs l-value
Run Code Online (Sandbox Code Playgroud)

这对我来说很有意义,因为 2 的补码结果不是中间变量,因此 ++ 没有任何可操作的内容。

我的研究告诉我

  1. 这是“”失败。
  2. 并不是这种情况下失败的主要原因。
  3. 二进制补码不是就地操作,因此它不会更改 iTmp,而是返回一个值。
  4. 遗留代码的工作靠运气 - 可能是由于编译器错误或错误总是强制执行运算符评估顺序。

我的评价正确吗?

对我来说,一个非常微妙的区别是前面的代码无效,但这一行可以:

if ( ++iTmp > 0)
Run Code Online (Sandbox Code Playgroud)

我没想到升级到会导致这个微妙的错误,但我不得不将代码更改为以下内容来解决问题:

iTmp = ~iTmp;
iTmp++;
Run Code Online (Sandbox Code Playgroud)

c++ order-of-execution c++14 c++17

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

shared_ptr 和 unique_ptr:有关特定情况的问题

我想定义两个类A,并I以它们的对象尊重这种关系的方式:

i1 -----------a1
  |------a2
  |----a3
Run Code Online (Sandbox Code Playgroud)
  • 该类的一个实例I指向该类的零个、一个或多个实例A

  • 类的一个实例A仅指向该类的一个实例I

  • 类的实例I可以没有任何类的实例A,但类的实例必须“附加”A类的实例。I

为了满足这些条件,我将这两个类声明如下:

class I;
class A
{
    private:
        std::string as;
        std::shared_ptr<I> iA;        
    public:
        A(std::string aTxt);
        A();
        ~A();
};

class I
{
   private:
       std::string ip;
       std::vector<std::unique_ptr<A>> as;
       friend class A;
   public:
       I(std::string i);
       ~I();
};
Run Code Online (Sandbox Code Playgroud)

在源文件中,我以这种方式定义了这两个类:

A::A(std::string aText)
{
    as = aText;
}

A::A()
{
    as = "";
}

A::~A()
{
}

I::I(std::string i)
{ …
Run Code Online (Sandbox Code Playgroud)

c++ smart-pointers shared-ptr unique-ptr

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