我有一个数字数组,这些数字有时用连字符连接起来,就像软件版本号一样。我想要做的是回声“失踪!” 或在缺少数字时运行特定功能。
例如:
$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) 我有一个结构向量,每个结构都有一个数字 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,但其他属性的值不同。现在,我认为结构在排序后没有可预测的顺序。有没有办法保证这种输出?我可以向结构添加另一个属性来指示其原始顺序,并以某种方式在排序算法中使用它吗?
我写了一个类来设置和过期浏览器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) 我有一个用 C++ 编写的大型程序,并使用 Inline::CPP 从 Perl 执行。代码似乎使用了大量内存,所以我假设存在某种泄漏。我编写了以下代码来重现相同的问题,但要简单得多。当我循环代码 1,000,000 次以测试代码的性能时,我发现了泄漏。这个简单的 Perl 脚本使用 828MiB,而我的完整程序使用 1.3GiB。
我尝试了很多方法,例如在代码中使用SvREFCNT_dec
、newRV_noinc
、sv_free
和sv_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)