问题列表 - 第318061页

从 std::vector 中删除元素的便捷且可读的方法

我需要从std::vector.

我知道这是可以做到的,myvector.erase(myvector.begin() + index)但这对我来说看起来很难看。

像这样的东西myvector.removeindex(index)会更具可读性。

他们是否在 C++20 或 C++23 中计划类似的事情?

c++ stdvector

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

为什么 Java 21 的 EnumSet 不实现新的 SequencedSet 接口?

当Java 21引入有序集合时,我非常高兴开始使用它们。但后来我很快发现JDK的各个角落似乎都会自然地应用新的排序接口,但它们并没有应用。我找不到对此的任何确认,也找不到任何证据表明未来有计划进一步将排序集合接口的使用扩展到更多 JDK 中。这让我感到惊讶,因为 JDK 的作者通常倾向于保持事物的一致性和完整性。

一个具体的例子是EnumSet。据我所知,没有根本原因EnumSet不能/不应该实施SequencedSet. 难道只是没有人愿意付出努力来实现一种reversed()方法吗EnumSet?或者有什么更严重的问题阻止了它?

java collections enumset java-21 sequencedset

5
推荐指数
2
解决办法
338
查看次数

R 没有在二项式 glm 中使用我的角色随机效果

当我尝试使用 glm 运行我的模型时出现此错误。为什么 R 不使用我的嵌套字符嵌套效果?

model <- glm(Propotion ~ Parasites_box * Parasites_nest + Day_of_year + Site + (1|Subsite/Nestbox/Cavity_ID), data = data.ex, family = binomial)

Error in Subsite/Trapnest : non-numeric argument to binary operator

Run Code Online (Sandbox Code Playgroud)

使用 glmer 给了我一个不同的警告:

model <- glmer(Propotion ~ Parasites_box * Parasites_nest + Day_of_year + Site + (1|Subsite/Nestbox/Cavity_ID), data = data.ex, family = binomial)

Error in (function (fr, X, reTrms, family, nAGQ = 1L, verbose = 0L, maxit = 100L,  : 
  Downdated VtV is not positive definite
In addition: …
Run Code Online (Sandbox Code Playgroud)

r mixed-models logistic-regression glmm

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

防止 ActiveRecord 迁移对 db/struct.sql 进行巨大更改

在测试(而非生产)数据库上运行下面的 ActiveRecord 迁移时,db/structure.sql会出现较大的变化。这是可重现的。变化是:

  • 基于迁移代码的少量预期更改(根据需要)。
  • 大量意外的更改,这些更改与迁移代码无关(不是所希望的)。所有这些意外的更改都重新排列了迁移中 SQL 代码中未提及的表、视图和物化视图的顺序。这些重新排列的表、视图和物化视图不与迁移中的SQL代码中的项目关联(例如,通过依赖关系)。

是什么导致了这些巨大的不相关差异,最重要的是,如何防止这些巨大的不相关差异?

它们是否与生产数据库服务器上的 postgresql 版本和在测试数据库上执行迁移的计算机上的 postgresql 版本不匹配有关?

这些不相关的更改使git diff输出的用处大大降低。GitHub 上的结果也是如此diff。

在下面这个最小的示例中,仅重新排列了一些表。但在现实生活中(较大的)迁移中,它改变了数十个表、视图和 matview 的顺序 - 这是一个巨大的变化。

class FixFooBarBaz < ActiveRecord::Migration[5.2]

  def up
    sql = <<~SQL
                  DROP VIEW master_foo;
                  DROP VIEW IF EXISTS bar1;
                  CREATE OR REPLACE VIEW bar1 AS
                  SELECT * FROM baz1
                  UNION ALL
                  SELECT * FROM baz2;
                  CREATE OR REPLACE VIEW master_foo AS
                  SELECT …
Run Code Online (Sandbox Code Playgroud)

ruby sql postgresql activerecord ruby-on-rails

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

将 Data.Text 值序列化为 ByteString,不含不必要的 \NUL 字节

使用以下代码,我想将 Data.Text 值序列化为 ByteString。不幸的是,我的文本前面添加了不必要的 NUL 字节和 EOT 字节:

GHCi, version 9.4.4: https://www.haskell.org/ghc/  :? for help
ghci> import qualified Data.Text as T
ghci> import Data.Binary
ghci> import Data.Binary.Put
ghci> let txt = T.pack "Text"
ghci> runPut $ put txt
"\NUL\NUL\NUL\NUL\NUL\NUL\NUL\EOTText"
ghci>
Run Code Online (Sandbox Code Playgroud)

问题:

  • 为什么会生成这些 NUL 和 EOT 字节?
  • 如何在生成的 ByteString 中避免它们?

PS:我真正的代码我把长度放在文本前面

    foo :: Text -> ByteString
    foo txt = runPut do
        putWord32host $ T.length txt
        put txt
Run Code Online (Sandbox Code Playgroud)

haskell bytestring

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

Delphi读取Windows 11系统路径

我正在开发在 64 位 Windows 11 上运行的 Delphi 12 应用程序。我的应用程序需要从注册表中读取路径(用户路径和系统路径),并且我的应用程序可以读取用户路径,但不能读取系统路径。

我使用“工具”->“选项”->“清单”要求管理员权限才能执行该程序,当我运行该应用程序时,它会提示我授权管理员模式,所以我知道它的一部分正在工作。

我已经在互联网上搜索了好几天寻找解决方案,并且尝试了我能找到的所有选项(Embarcadero 的网站本周关闭,这使得所有这一切变得更加困难,因为我在那里找到了许多文章参考文档)并且每次,代码成功打开指定的键 ( SYSTEM\CurrentControlSet\Control\Session Manager\Environment),但无法读取其中的任何属性(如path属性)。

我什至尝试TStringList使用该键下的所有属性填充 a

我创建了一个示例应用程序来演示这一点,您可以在https://github.com/johnwargo/Path-Test-2024找到它。

procedure PopulateList(pathList: TListBox; source: String; rootKey: HKEY;
  regKey, regProperty: String);
var
  Reg: TRegistry;
  pathArray: Tarray<String>;
  msg, pathStr: String;

begin
  LogMessage(Format('Reading "%s" Path from "%s"', [source, regKey]));
  // Reg := TRegistry.Create(KEY_ALL_ACCESS);
  // Reg := TRegistry.Create(KEY_ALL_ACCESS OR KEY_WOW64_64KEY);
  // Reg := TRegistry.Create(KEY_EXECUTE);
  // Reg := TRegistry.Create(KEY_EXECUTE OR KEY_WOW64_64KEY);
  // Reg := TRegistry.Create(KEY_READ OR KEY_WOW64_32KEY);
  Reg := TRegistry.Create(KEY_READ …
Run Code Online (Sandbox Code Playgroud)

windows delphi registry path

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

std::remove_reference 不删除引用

这会打印 cout,这意味着 的类型T是int&:

#include <vector>
#include <sys/types.h>
using namespace std;
using var_t = std::variant<int, long, double, std::string>;

int main(int argc, char* argv[]) {
    std::vector<var_t> vec = {10};
    for(auto v : vec) {
        std::visit([](auto&& arg) {
            using T = decltype(arg);
            // if (std::is_same_v<std::remove_reference<T>, int>) {
            if (std::is_same_v<T, int&>) {
                cout<<"int "<<arg<<endl;
            }
        }, v);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我申请std::remove_reference,它不会打印。

事实上,无论我使用int、int&或int&&,cout 都不会被打印。

#include <vector>
#include <sys/types.h>
using namespace std;
using …
Run Code Online (Sandbox Code Playgroud)

c++

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

将 NASM 汇编代码中的 Windows API 函数 (ExitProcess) 与 MinGW 上的 GCC 链接时出现问题

我正在尝试在 Windows 上的 NASM 中编写一个简单的汇编程序,其中包含一个循环并从 Windows API 调用 ExitProcess 函数。我已经使用 NASM 成功组装了代码,但是当我尝试将其与 MinGW 上的 GCC 链接时,我遇到了 ExitProcess@4 的“未定义引用”错误。

这是我的汇编代码(file.asm):

section .data
    i dd 0

section .text
    global _start

    extern ExitProcess@4   ; Import ExitProcess function from kernel32.dll

_start:
    mov ecx, 1000000       ; set loop counter

    ; loop start
loop_start:
    mov eax, [i]           ; load i into eax
    ; your code inside the loop (e.g., b = i) goes here

    add eax, 1             ; increment eax
    mov [i], eax           ; store the …
Run Code Online (Sandbox Code Playgroud)

assembly gcc nasm

6
推荐指数
0
解决办法
47
查看次数

如何从 lua 中的关键位置开始迭代表?

我正在尝试迭代表,但使用键从表中的位置开始。

list = {
  "one",
  "two",
  "four",
  "five",
  "six"
}

for k = 3, v in pairs(list) do
  print("Key:" .. k .. " " .. "Value:" .. v)
end
Run Code Online (Sandbox Code Playgroud)

Compilation error on line 10: ...\ZeroBraneStudio\myprograms\untitled.lua:10: 'do' expected near 'in'

lua loops lua-table

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

为什么 Haskell 中没有包装 IO 的输出?

main :: IO (IO ())
main = (pure (print)) <*> (pure "Hello World!") *>
       (pure (print)) <*> (pure "I am Haskell.") *>
       (pure (print)) <*> (pure "Let's start our journey.")
Run Code Online (Sandbox Code Playgroud)

我写了一个Haskell程序,如上所述。我编译并运行它。但该程序没有输出。为什么?。

我不知道如何解决这个问题。

haskell

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