标签: variable-length

以统一格式使用指令有什么好处?

许多处理器具有统一格式和宽度的指令,例如ARM,其中所有指令都是32位长.其他处理器具有多个宽度的指令,例如长度为2,3或4个字节,例如8086.

  1. 使所有指令具有相同宽度和统一格式的优点是什么?
  2. 使用多个宽度的指令有什么好处?

encoding cpu-architecture variable-length instructions fixed-width

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

编码一系列随机可变长度二进制代码的最简洁方法?

假设您有一个,List<List<Boolean>>并且您希望以最紧凑的方式将其编码为二进制形式.

我不关心读写性能.我只是想使用最小的空间.此外,该示例在Java中,但我们不限于Java系统.每个"列表"的长度是无限的.因此,编码每个列表长度的任何解决方案本身必须编码可变长度数据类型.

与此问题相关的是可变长度整数的编码.您可以将每个List<Boolean>视为可变长度unsigned integer.

请仔细阅读问题.我们不仅限于Java系统.

编辑

我不明白为什么很多答案都谈论压缩.我本身并不是在尝试压缩,而只是编码随机的位序列.除了每个比特序列具有不同的长度并且需要保留顺序.

你可以用不同的方式思考这个问题.假设您有一个随机无符号整数列表(无界).如何在二进制文件中编码此列表?

研究

我做了一些阅读,发现我真正想要的是通用代码

结果

我将使用本文中描述的Elias Omega Coding的变体一个新的正整数的递归通用代码

我现在明白,较小整数的表示越小,整数就越大.通过简单地选择具有第一个整数的"大"表示的通用代码,当您需要对任意大整数进行编码时,从长远来看可以节省大量空间.

binary encoding integer variable-length space-efficiency

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

Pytorch Dataloader如何处理可变大小的数据?

我有一个数据集,如下所示。那就是第一项是用户ID,后跟用户单击的一组项目。

0   24104   27359   6684
0   24104   27359
1   16742   31529   31485
1   16742   31529
2   6579    19316   13091   7181    6579    19316   13091
2   6579    19316   13091   7181    6579    19316
2   6579    19316   13091   7181    6579    19316   13091   6579
2   6579    19316   13091   7181    6579
4   19577   21608
4   19577   21608
4   19577   21608   18373
5   3541    9529
5   3541    9529
6   6832    19218   14144
6   6832    19218
7   9751    23424   25067   12606   26245   23083   12606
Run Code Online (Sandbox Code Playgroud)

我定义了一个自定义数据集来处理我的点击日志数据。

0   24104   27359 …
Run Code Online (Sandbox Code Playgroud)

python variable-length pytorch tensor

12
推荐指数
3
解决办法
1669
查看次数

获取多维元组的最大长度

我的元组看起来像这样(对于一组特定的生成值)

tTrains = [ (3, ), (1, 3), (6, 8), (4, 6, 8, 9), (2, 4) ]
Run Code Online (Sandbox Code Playgroud)

现在,我需要找到的是这个元组/列表中最长元组的长度.我总是可以使用for循环,遍历所有子元组并执行它.但我想询问是否有相同的预定义功能.

目前的用法

这就是我现在要使用的内容

max = 0
for i in range( len(tTrains) ):
  if iMax < len( i ):
    iMax = len( i )
Run Code Online (Sandbox Code Playgroud)

python tuples variable-length

11
推荐指数
3
解决办法
4288
查看次数

可变长度模板参数列表?

我记得做过这样的事情:

template <ListOfTypenames>
class X : public ListOfTypenames {};
Run Code Online (Sandbox Code Playgroud)

也就是说,X继承自作为模板参数传递的可变长度的类型名列表.当然,这段代码是假设的.

但是我找不到任何参考.可能吗?是C++ 0x吗?

c++ templates variable-length c++11

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

当内存不足时,如何防止可变长度数组崩溃?

在支持可变长度数组之前,我会像这样动态分配它们:

int foo(size_t n)
{
    int *arr = malloc(n * sizeof int);
    if (!arr) return ENOMEM; /* not enough memory */
    .
    . else do stuff with arr[]
    .
    free(arr);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

使用可变长度数组,我现在可以使它看起来更干净:

int bar(size_t n)
{
    int arr[n];
    .
    . do stuff with arr[]
    .
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在我没有"内存不足"检查.事实上,如果n太大,程序会崩溃.

如果n太大,我如何优雅地从bar(n)保释?

c arrays variable-length

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

(int(*)[])var1代表什么?

我找到了这个示例代码,我试图google什么(int (*)[])var1可以代表,但我没有得到有用的结果.

#include <unistd.h>
#include <stdlib.h>

int i(int n,int m,int var1[n][m]) {
    return var1[0][0];
}

int example() {
    int *var1 = malloc(100);
    return i(10,10,(int (*)[])var1);
} 
Run Code Online (Sandbox Code Playgroud)

通常我在C99中使用VLA,所以我习惯于:

#include <unistd.h>
#include <stdlib.h>

int i(int n,int m,int var1[n][m]) {
    return var1[0][0];
}

int example() {
    int var1[10][10];
    return i(10,10,var1);
} 
Run Code Online (Sandbox Code Playgroud)

谢谢!

c c99 variable-length multidimensional-array

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

迭代地找到字符数组k的所有组合(N选择K)

我目前正在将这个问题作为一个个人项目来处理.

基本上:

  • 给定一系列元素,例如E = {1,2,a,b}和
  • 给定数字K,例如K = 2
  • 我想要返回大小为K的E的所有组合(E选择K)
  • 例如{{1,1},{1,2},{1,a},{1,b},{2,1},...,{b,1},{b,2},{b ,a},{b,b}}

我已经使用以下函数递归地实现了这个:

char[] pool = new char[]{'1', '2', '3'};

public void buildStringRec(char[] root, int pos, int length){
    for(char c : pool){
        char[] newRoot = root.clone();
        newRoot[pos] = c;
        if(pos+1 < length){
            buildStringRec(newRoot, pos+1, length);
        } else{
            System.out.println(String.valueOf(root));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

poolE和lengthK 在哪里?

所以我们打电话给:buildStringRec(new char[2], 0, 2);得到

11
12
13
21
22
23
31
32
33
Run Code Online (Sandbox Code Playgroud)

这可以迭代完成吗?我一直试图围绕如何使用可变长度来做这件事.

任何帮助,将不胜感激!如果需要,我可以按照原样发布我的代码,但由于我的重试,它发生频率变化,我发布它几乎没用.

另外,我不想使用Apache或String Builder这样做,因为我想了解如何做到这一点的概念.我不是简单地要求代码.只要清楚地解释,伪代码就可以了.

谢谢!

编辑

我正在使用这个网站测试提供给我的所有选项:https: …

iteration algorithm combinations permutation variable-length

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

数据表中变量的唯一Ob数

我使用以下命令将大数据文件读入R中

data <- as.data.set(spss.system.file(paste(path, file, sep = '/')))
Run Code Online (Sandbox Code Playgroud)

数据集包含不属于的列,并且只包含空格.此问题与R根据附加到SPSS文件()的变量标签创建新变量有关.

不幸的是,我无法确定解决问题所需的选项.我已经尝试了所有:foreign :: read.spss,memisc:spss.system.file和Hemisc :: spss.get,没有运气.

相反,我想读取整个数据集(使用ghost列)并手动删除不必要的变量.由于ghost列只包含空格,我想从我的data.table中删除任何变量,其中唯一观察的数量等于1.

我的数据很大,因此它们以data.table格式存储.我想确定一种简单的方法来检查每列中唯一观察的数量,并删除仅包含一个唯一观察的列.

require(data.table)

### Create a data.table
dt <- data.table(a = 1:10,
                 b = letters[1:10],
                 c = rep(1, times = 10))

### Create a comparable data.frame
df <- data.frame(dt)

### Expected result
unique(dt$a)

### Expected result
length(unique(dt$a))
Run Code Online (Sandbox Code Playgroud)

但是,我希望计算大型数据文件的obs数,因此不希望按名称引用每一列.我不是eval(parse())的粉丝.

### I want to determine the number of unique obs in
  # each variable, for a large list of vars
lapply(names(df), function(x) {
    length(unique(df[, x]))
}) …
Run Code Online (Sandbox Code Playgroud)

r unique variable-length data.table

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

如何替换va_list中的值?

我想做一些关于va_list的练习.这是我的代码.

int myscanf( char* fmt, ... ) {
  va_list ap;
  va_start ( ap, fmt );
  vfscanf ( stdin, fmt, ap );
  va_end ( ap );
}

int main() {
  int a, b;
  myscanf( "%d %d", &a, &b );
}
Run Code Online (Sandbox Code Playgroud)

如上所示,我写了一个scanf(),它是有效的.

现在我想重定向myscanf()中参数的值.

例如,我可以将fmt重定向到myscanf()中分配的空间

int myscanf( char* fmt, ... ) {
  char newFmt[10] = "%d %d";
  va_list ap;
  va_start ( ap, fmt );
  vfscanf ( stdin, newFmt, ap );
  va_end ( ap );
}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试更改其他参数的值时,我感到困惑.

我可以通过va_arg()获取这些变量参数,但我不能修改它们,因为va_arg()是一个宏.

int myscanf( char* fmt, ... ) …
Run Code Online (Sandbox Code Playgroud)

c variable-length

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