标签: variable-length

为什么变长数组不是C++标准的一部分?

在过去的几年里,我并没有非常使用过C语言.当我今天读到这个问题时,我遇到了一些我不熟悉的C语法.

显然在C99中,以下语法有效:

void foo(int n) {
    int values[n]; //Declare a variable length array
}
Run Code Online (Sandbox Code Playgroud)

这似乎是一个非常有用的功能.有没有关于将它添加到C++标准的讨论,如果是这样,为什么它被省略?

一些潜在的原因:

  • 毛茸茸的编译器供应商实现
  • 与标准的其他部分不兼容
  • 可以使用其他C++构造模拟功能

C++标准规定数组大小必须是常量表达式(8.3.4.1).

是的,当然我意识到在玩具示例中可以使用std::vector<int> values(m);,但这会从堆中分配内存而不是堆栈.如果我想要一个多维数组,如:

void foo(int x, int y, int z) {
    int values[x][y][z]; // Declare a variable length array
}
Run Code Online (Sandbox Code Playgroud)

vector版本变得很笨拙:

void foo(int x, int y, int z) {
    vector< vector< vector<int> > > values( /* Really painful expression here. */);
}
Run Code Online (Sandbox Code Playgroud)

切片,行和列也可能遍布整个内存.

看一下comp.std.c++这个问题的讨论很明显,这个问题在争论的两个方面都有一些非常重要的名字引起争议.毫无疑问,a std::vector总是更好的解决方案.

c++ arrays standards variable-length variable-length-array

311
推荐指数
7
解决办法
14万
查看次数

如何在python中找到"过滤器"对象的长度

>>> n = [1,2,3,4]

>>> filter(lambda x:x>3,n)
<filter object at 0x0000000002FDBBA8>

>>> len(filter(lambda x:x>3,n))
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    len(filter(lambda x:x>3,n))
TypeError: object of type 'filter' has no len()
Run Code Online (Sandbox Code Playgroud)

我无法得到我得到的清单的长度.所以我尝试将它保存到变量中,就像这样......

>>> l = filter(lambda x:x>3,n)
>>> len(l)
Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    len(l)
TypeError: object of type 'filter' has no len()
Run Code Online (Sandbox Code Playgroud)

而不是使用循环,有没有办法得到这个的长度?

filter variable-length python-3.x

48
推荐指数
5
解决办法
4万
查看次数

javascript对象最大大小限制

我正在尝试使用jquery.ajax方法将JavaScript变量传递给服务器端.

我正在尝试创建一个json字符串,但是当变量的长度达到10000时,不再向该字符串附加数据.

var jsonObj = '{"code":"' + code + '","defaultfile":"' + defaultfile + '","filename":"' + currentFile + '","lstResDef":[';
        $.each(keys, function(i, item) {
            i = i + 1;
            var value = $("#value" + i).val();
            var value = value.replace(/"/g, "\\\"");
            jsonObj = jsonObj + '{';
            jsonObj = jsonObj + '"Key":' + '"' + Encoder.htmlEncode($(this).html()) + '"' + "," + '"Value"' + ':' + '"' + Encoder.htmlEncode(value) + '"';
            jsonObj = jsonObj + '},';
            alert(jsonObj);             
        });          

        jsonObj = jsonObj + ']}'; …
Run Code Online (Sandbox Code Playgroud)

javascript variable-length

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

如何在Keras中创建可变长度输入LSTM?

我正在尝试使用Keras使用LSTM进行一些香草模式识别来预测序列中的下一个元素.

我的数据如下所示:

我的数据

其中训练序列的标签是列表中的最后一个元素:X_train['Sequence'][n][-1].

因为我的Sequence列在序列中可以有可变数量的元素,所以我认为RNN是最好的模型.以下是我在Keras建立LSTM的尝试:

# Build the model

# A few arbitrary constants...
max_features = 20000
out_size = 128

# The max length should be the length of the longest sequence (minus one to account for the label)
max_length = X_train['Sequence'].apply(len).max() - 1

# Normal LSTM model construction with sigmoid activation
model = Sequential()
model.add(Embedding(max_features, out_size, input_length=max_length, dropout=0.2))
model.add(LSTM(128, dropout_W=0.2, dropout_U=0.2))
model.add(Dense(1))
model.add(Activation('sigmoid'))

# try using different optimizers and different optimizer configs
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud)

以下是我尝试训练模型的方法: …

variable-length python-3.x lstm keras recurrent-neural-network

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

"map"类型的对象在Python 3中没有len()

我有Python 3的问题.我得到了Python 2.7代码,目前我正在尝试更新它.我收到错误:

TypeError:'map'类型的对象没有len()

在这一部分:

str(len(seed_candidates))
Run Code Online (Sandbox Code Playgroud)

在我像这样初始化之前:

seed_candidates = map(modify_word, wordlist)
Run Code Online (Sandbox Code Playgroud)

那么,有人可以解释一下我必须做什么吗?

(编辑:以前这个代码示例是错误的,因为它使用set而不是map.它现在已经更新.)

python variable-length python-3.x

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

MATLAB中未知长度的矩阵?

我正在尝试设置一个可变长度的零矩阵,其中有两列我可以输出while循环的结果(目的是使用它来存储来自Euler方法的步骤数据和调整后的时间步长).长度将由循环的迭代次数确定.

我想知道是否有一种方法可以在我运行循环时执行此操作,或者是否需要将其设置为开始,以及如何执行此操作.

matlab matrix variable-length

24
推荐指数
3
解决办法
6万
查看次数

查找字符串是否以列表的可变长度前缀之一开头

我需要找出一个名称是否以列表的任何前缀开头,然后删除它,如:

if name[:2] in ["i_", "c_", "m_", "l_", "d_", "t_", "e_", "b_"]:
    name = name[2:]
Run Code Online (Sandbox Code Playgroud)

以上仅适用于长度为2的列表前缀.我需要与可变长度前缀相同的功能.

如何有效地完成(代码少,性能好)?

一个for循环迭代每个前缀,然后检查name.startswith(prefix)最终根据前缀的长度切片名称,但它是很多代码,可能效率低,而且"非Pythonic".

有没有人有一个很好的解决方案?

python string prefixes variable-length

21
推荐指数
3
解决办法
4万
查看次数

变量大小的Struct C++

这是在C++中制作可变大小结构的最佳方法吗?我不想使用vector,因为初始化后长度不会改变.

struct Packet
{
    unsigned int bytelength;
    unsigned int data[];
};

Packet* CreatePacket(unsigned int length)
{
    Packet *output = (Packet*) malloc((length+1)*sizeof(unsigned int));
    output->bytelength = length;
    return output;
}
Run Code Online (Sandbox Code Playgroud)

编辑:重命名变量名称和更改的代码更正确.

c++ struct variable-length

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

使用Javascript可以实现可变长度数组

我想在Javascript中创建一个可变长度数组.

这可能吗.快速谷歌搜索"Javascript变长数组"似乎没有产生任何东西,如果有可能这样做,这将是令人惊讶的.

我是否应该使用一个字符串来代替我使用分隔符添加,或者是否有更好的方法来获得类似长度的可变数组变量.

javascript arrays variable-length

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

MVC 4 - 编辑可变长度项目列表的更优雅方式?

我发现编辑可变长度项目列表的最佳建议是在2008年为ASP.Net MVC 2编写的.

http://blog.stevensanderson.com/2008/12/22/editing-a-variable-length-list-of-items-in-aspnet-mvc/

这种方法仍然是ASP.Net MVC 4的最佳方法,还是有更新的解决方案既标准化又更优雅?

asp.net-mvc variable-length asp.net-mvc-4

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