小编Tho*_*ers的帖子

将Vec <u32>转换为Vec <u8>,并且开销最小

我想一个转换Vecu32s到一个Vecu8S,最好就地并没有太多的开销.

我目前的解决方案依赖于不安全的代码来重新构建Vec.有没有更好的方法来做到这一点,以及与我的解决方案相关的风险是什么?

use std::mem;
use std::vec::Vec;

fn main() {
    let mut vec32 = vec![1u32, 2];
    let vec8;
    unsafe {
        let length = vec32.len() * 4; // size of u8 = 4 * size of u32
        let capacity = vec32.capacity() * 4; // ^
        let mutptr = vec32.as_mut_ptr() as *mut u8;
        mem::forget(vec32); // don't run the destructor for vec32

        // construct new vec
        vec8 = Vec::from_raw_parts(mutptr, length, capacity);
    }

    println!("{:?}", vec8) …
Run Code Online (Sandbox Code Playgroud)

casting unsafe rust

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

如何找出哪个变量具有最大价值

if A > B and C and D:
   print("A wins")
if B>A and C and D:
   print("B wins")
Run Code Online (Sandbox Code Playgroud)

如何检查并查看哪个变量包含组中最大的整数?决定胜谁?

python

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

Python:为什么重新定义函数不是错误?有这种功能的hackish方式?

例如:

def foo():
    print 'first foo'
def foo():
    print 'second foo'

foo()
Run Code Online (Sandbox Code Playgroud)

默默地产生: second foo

今天我在同一个文件中复制/粘贴了一个函数定义,并在第二个定义的主体中更改了几行,但忘了更改函数名本身.我长时间挠头看着输出,我花了一段时间才弄明白.

如何强制解释器在重新定义函数时至少抛出一个警告?提前致谢.

python

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

我可以在python 2.4中使用什么而不是next()

我需要模拟izip_longestitertools在Python 2.4

import itertools
class Tools:
    @staticmethod
    def izip_longest(*args, **kwds):
        # izip_longest('ABCD', 'xy', fillvalue='-') --> Ax By C- D-
        fillvalue = kwds.get('fillvalue')
        counter = [len(args) - 1]
        def sentinel():
            if not counter[0]:
                raise ZipExhausted
            counter[0] -= 1
            yield fillvalue
        fillers = itertools.repeat(fillvalue)
        iterators = [itertools.chain(it, sentinel(), fillers) for it in args]
        try:
        while iterators:
            yield tuple(map(next, iterators))
        except ZipExhausted:
            pass       


class ZipExhausted(Exception):
    pass
Run Code Online (Sandbox Code Playgroud)

一切正常,直到我到达yield tuple(map(next, iterators)); Python 2.4抛出一个

NameError: global name 'next' is not …
Run Code Online (Sandbox Code Playgroud)

python python-2.4 next python-itertools

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

无法从单选按钮获取价值

我想在提交时从单选按钮获取数据,但我不知道为什么我无法从收音机中获取它的价值.

我的代码

<?php
   $choice = $_GET['choice'];
?>

<html>
<head>
</head>
<body>
    <form action="index.php" method="POST">
    <table align="center">
        <tr><td>Please select</td></tr>
        <tr><td><input type="radio" name="choice" value="0">aaaa</td></tr>
        <tr><td><input type="radio" name="choice" value="1">bbbb</td></tr>
        <tr><td><input type="radio" name="choice" value="2">cccc</td></tr>
        <tr><td><input type="radio" name="choice" value="3">dddd</td></tr>
        <tr><td><input type="submit" value="submit"></td></tr>
    </table>
             <?php echo"$choice";?>
    </form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

html php

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

如何在C中理解这个#define

我正在阅读"The C puzzle book",我发现了#define,我想了解它是如何工作的.

#define PRINT(int) printf(#int " = %d\n", int)
Run Code Online (Sandbox Code Playgroud)

我之前从未见过类似#int的东西所以我写了一个小程序来试试上面的内容

#include <stdio.h>
#define PRINT(int) printf(#int " = %d\n", int)
int main()
{
    PRINT(10);
}

Result: 10 = 10
Run Code Online (Sandbox Code Playgroud)

在这种情况下,预处理器如何解释#int以及在哪里可以阅读更多相关内容?

谢谢.

c c-preprocessor

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

检查构造的常量是否为#define

我正在尝试建立一个测试,以检查某个文件是否定义了具有某个名称空间的标头保护。由于测试是通用的,因此仅在编译时才知道此名称空间,并以形式传入-DTHENAMESPACE=BLA。然后,我们使用/sf/answers/104298981/的一些魔术将它们粘贴在一起。

这意味着我想做类似的事情:

#define PASTER(x, y) x##_##y
#define EVALUATOR(x, y) PASTER(x, y)
#define NAMESPACE(fun) EVALUATOR(THENAMESPACE, fun)
#ifndef NAMESPACE(API_H)  // evaluates to BLA_API_H
#  error "namespace not properly defined"
#endif
Run Code Online (Sandbox Code Playgroud)

但这不能正常工作,因为cpp抱怨ifndef括号不正确。

如果有可能,我该如何正确地做到这一点?

我也尝试过添加更多的间接层,但是没有取得很大的成功。


因此,直接执行#ifdef此操作至少似乎是不可能的:

考虑到defined运营商:

如果定义的运算符是由于宏扩展而出现的,则C标准表示该行为是undefined。GNU cpp将其视为真正的定义运算符,并对其进行正常评估。如果您使用命令行选项-Wpedantic,它将在您的代码使用此功能的任何地方发出警告,因为其他编译器可能会以不同方式处理它。该警告也可以通过-Wextra启用,也可以通过-Wexpansion-to-defined单独启用。

https://gcc.gnu.org/onlinedocs/cpp/Defined.html#Defined

ifdef预期会出现MACRO,并且不会进一步扩展。

https://gcc.gnu.org/onlinedocs/cpp/Ifdef.html#Ifdef

但是也许有可能触发“未定义的常量”警告(-Wundef),这也将使我的测试管道能够解决此问题。

c c-preprocessor

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

使用php进行动态xml处理

我使用许多不同类型的xml文件.我将这些内容加载到我的mysql数据库中.问题是我需要定义每次都要选择的标签.

是否有一个php dom对象函数可以迭代所有标记并将它们提供给我.

这是我的样本xml

<products> 
   <product> 
        <name>Name of product</name> 
        <categories> 
            <category>Apparel</category> 
           <category>Trousers</category> 
           <category>Blue</category>
        </categories> 
        <description>Blue trousers</description>
        <price>599.00</price> <regularPrice>599.00</regularPrice>
   </product>
</products>
Run Code Online (Sandbox Code Playgroud)

输出应该不是值,而是XML标签的实际名称,在这种情况下应该是 产品,产品,名称,类别,类别,描述,价格

获取这些值我可以通过连接表动态地指出它们,始终保存在右表和右侧字段中.

php xml mysql

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

标签 统计

python ×3

c ×2

c-preprocessor ×2

php ×2

casting ×1

html ×1

mysql ×1

next ×1

python-2.4 ×1

python-itertools ×1

rust ×1

unsafe ×1

xml ×1