小编Cof*_*ker的帖子

PHP 在带连字符的数字数组中查找缺失的数字

我有一个数字数组,这些数字有时用连字符连接起来,就像软件版本号一样。我想要做的是回声“失踪!” 或在缺少数字时运行特定功能。

例如:

$numbers = array('1', '2', '3', '5', '6', '8');
Run Code Online (Sandbox Code Playgroud)

印刷:

1
2
3
Missing!
5
6
Missing!
8
Run Code Online (Sandbox Code Playgroud)

我遇到了连字符的问题。

例如:

$numbers = array('1', '1-1', '1-3', '3-1-1', '3-1-3');
Run Code Online (Sandbox Code Playgroud)

印刷:

1
1-1
Missing!
1-3
Missing!
3-1-1
Missing!
3-1-3
Run Code Online (Sandbox Code Playgroud)

另外,我的代码看起来很长/做了太多的事情——在我看来——应该是一个简单的任务。有这种事情的方法或算法吗?

这是我的代码:

<?php

    $numbers = array(
        '1',
        '1-1',
        '1-3',
        '3-1-1',
        '3-1-3'
    );

    foreach ($numbers as $number) {
        if (isset($prev_number)) {
            $curr_number = explode('-', $number);
            $prev_levels = explode('-', $prev_number);

            if (preg_match('/-/', $number) and !preg_match('/-/', $prev_number)) {
                if (current() - $prev_levels[0] >= 1) { …
Run Code Online (Sandbox Code Playgroud)

php arrays algorithm numbers

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

排序后如何保持向量中重复项的顺序?

我有一个结构向量,每个结构都有一个数字 ID,我用它来对向量项进行排序。我希望对 ID 进行排序,但在排序后也按照它们在原始向量中的顺序显示。让我解释...

假设你有一个像这样的向量(忽略结构):

vector<int> items = {
    1,
    2,
    5, // First 5
    8,
    9,
    6,
    5, // Second 5
    4,
    7,
    3,
    5, // Third 5
    10
};
Run Code Online (Sandbox Code Playgroud)

排序后我希望向量看起来像这样:

vector<int> items = {
    1,
    2,
    3,
    4,
    5, // First 5
    5, // Second 5
    5, // Third 5
    6,
    7,
    8,
    9,
    10
};
Run Code Online (Sandbox Code Playgroud)

请记住,这些项目实际上是结构。多个可以具有相同的 ID,但其他属性的值不同。现在,我认为结构在排序后没有可预测的顺序。有没有办法保证这种输出?我可以向结构添加另一个属性来指示其原始顺序,并以某种方式在排序算法中使用它吗?

c++ sorting algorithm stable-sort

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

对OOP不熟悉,如何将类公共变量设置为全局变量以用于静态方法?

我写了一个类来设置和过期浏览器cookie.我试图将类公共变量设置为全局变量的值,以允许我静态使用类方法.基本上我想要做的就是删除重复的全局$settings$expire$domain变量.

这是我的代码:

<?php

    class cookies {
        public static function set($name, $value, $date = false) {
            global $settings;

            $expire = ($date) ? $date : $settings['expire'];
            $domain = str_replace('www.', '', $settings['domain']);
            setcookie($name, $value, $expire, '/', $domain);
        }

        public static function clear() {
            global $settings;

            $domain = str_replace('www.', '', $settings['domain']);
            setcookie('test1', '', 1, '/', $domain);
            setcookie('test2', '', 1, '/', $domain);
        }
    }

?>
Run Code Online (Sandbox Code Playgroud)

php oop

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

我的 Perl XS 代码中的内存泄漏在哪里?

我有一个用 C++ 编写的大型程序,并使用 Inline::CPP 从 Perl 执行。代码似乎使用了大量内存,所以我假设存在某种泄漏。我编写了以下代码来重现相同的问题,但要简单得多。当我循环代码 1,000,000 次以测试代码的性能时,我发现了泄漏。这个简单的 Perl 脚本使用 828MiB,而我的完整程序使用 1.3GiB。

我尝试了很多方法,例如在代码中使用SvREFCNT_decnewRV_noincsv_freesv_2mortal各种变量,但我一直无法降低内存使用量。

这是我的示例代码:

use Data::Dumper;

print Dumper test ();

use Inline 'CPP' => << 'CPP';
    #include <array>

    using namespace std;

    AV *array_to_av (const array<int,3> &v)
    {
        AV *array = newAV ();

        for (int i : v) {
            av_push (array, newSViv (i));
        }

        return array;
    }

    SV *test_leak ()
    {
        HV *hash = newHV ();

        AV *array1 = array_to_av ({1,2,3});
        AV …
Run Code Online (Sandbox Code Playgroud)

c++ perl xs inline-c

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

标签 统计

algorithm ×2

c++ ×2

php ×2

arrays ×1

inline-c ×1

numbers ×1

oop ×1

perl ×1

sorting ×1

stable-sort ×1

xs ×1