小编ami*_*ali的帖子

错误“文件是一个 commonJS 模块;它可能被转换为 ES6 模块。ts(80001)”

在 vscode 中开发 javascript,我在网上看到这个错误const Koa = require("Koa");

File 是一个 CommonJS 模块;它可以转换为 ES6 模块。ts(80001)

在我搜索后,只找到了 1 个禁用所有建议操作的解决方案。

如何仅禁用“要求”错误而不禁用所有建议操作?

javascript commonjs visual-studio-code vscode-settings

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

当用C中的指针定义时,为什么我们使用`const`作为字符串?

我从一位C开发人员那里听说,为了使用指针定义数组,我们编写
int *const a;
因为数组具有变量值而是常量指针.但对于字符串,我们写
const char *s;.

我不明白为什么.它是否正确?字符串在C中是否真的具有常量值和变量指针?

c arrays string pointers const

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

条件数组的第一个元素

我正在寻找一种优雅的方法来获取满足给定条件的数组的第一个(也是第一个)元素。

简单的例子:

输入:

[
    ['value' => 100, 'tag' => 'a'],
    ['value' => 200, 'tag' => 'b'],
    ['value' => 300, 'tag' => 'a'], 
 ]
Run Code Online (Sandbox Code Playgroud)

条件: $element['value'] > 199

预期产量:

['value' => 200, 'tag' => 'b']
Run Code Online (Sandbox Code Playgroud)

我自己想出了几种解决方案:

  1. 遍历数组,检查条件并在找到时中断

  2. 使用array_filter施加条件并获取已过滤的第一个值:

    array_values(
        array_filter(
            $input, 
            function($e){
                return $e['value'] >= 200;
            }
        )
    )[0];
    
    Run Code Online (Sandbox Code Playgroud)

两者似乎都比较麻烦。有人有更清洁的解决方案吗?我是否缺少内置的php函数?

php array-filter

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

无法从基于 libstdc++ 策略的数据结构中擦除

在 C++ 中有一个关联的容器,它实际上是一个集合(multiset),它可以给出其中元素的顺序。

这是我如何使用容器:

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>

using namespace std;
using namespace __gnu_pbds;

template <typename T>
using ordered_multiset = tree<T, null_type, less_equal<T>, rb_tree_tag,
                              tree_order_statistics_node_update>;
Run Code Online (Sandbox Code Playgroud)

问题是,我无法从中删除元素:

ordered_multiset<int> s;
s.insert(0);
s.erase(0);

cout << s.order_of_key(1); // returns number of elements less than x

// Outputs: 1
Run Code Online (Sandbox Code Playgroud)

奇怪的是,如果您替换less_equalless,那么您将能够毫无问题地完成这项工作,实际上如果您将容器用作多重集,那么您将无法从中删除元素,但是没有成套使用时的问题。

  • 导致问题的原因是什么?
  • 我该如何解决问题?

注意:请不要建议使用其他容器来解决问题。那不是解决办法。

c++ containers stl libstdc++

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

`0x2` 是 C++ 中的空指针吗?

在以下代码中:

int* p = (int*)0x2;
*p = 1;
Run Code Online (Sandbox Code Playgroud)

此代码导致分段错误。但:

int* p = (int*)0x2;
cout << (p == nullptr);
Run Code Online (Sandbox Code Playgroud)

输出是0。所以:

  1. 指向地址的指针是否0x2真的是空指针(这会导致分段错误)?
  2. 我如何处理0x2if 语句之类的情况?(我的意思是,处理取消引用会导致分段错误的情况。因为在if (p == nullptr)这种情况下没有处理)。
  3. 除了0x2取消引用指向它们的指针会导致分段错误之外,还有哪些地址?为什么?

c++ pointers segmentation-fault

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