Questions tagged «arrays»

数组是一种有序的数据结构,由一组元素(值,变量或引用)组成,每个元素由一个或多个索引标识。当询问数组的特定变体时,请使用以下相关标记:[vector],[arraylist],[matrix]。使用此标签时,在特定于编程语言的问题中,使用正在使用的编程语言对问题进行标签。

3
Java 14记录和数组
给出以下代码: public static void main(String[] args) { record Foo(int[] ints){} var ints = new int[]{1, 2}; var foo = new Foo(ints); System.out.println(foo); // Foo[ints=[I@6433a2] System.out.println(new Foo(new int[]{1,2}).equals(new Foo(new int[]{1,2}))); // false System.out.println(new Foo(ints).equals(new Foo(ints))); //true System.out.println(foo.equals(foo)); // true } 看来,很明显,该阵列的toString,equals方法是使用(而不是静态方法,Arrays::equals,Arrays::deepEquals 或Array::toString)。 所以我想Java 14 Records(JEP 359)在数组上不能很好地工作,相应的方法必须由IDE生成(至少在IntelliJ中,默认情况下会生成“有用的”方法,即它们使用静态方法)在Arrays)。 还是有其他解决方案?

1
自C ++ 20起允许在分配的存储上使用指针算术吗?
在C ++ 20标准中,据说数组类型是隐式生存期类型。 这是否意味着可以隐式创建非隐式生命周期类型的数组?这样的数组的隐式创建会不会导致创建数组的元素? 考虑这种情况: //implicit creation of an array of std::string //but not the std::string elements: void * ptr = operator new(sizeof (std::string) * 10); //use launder to get a "pointer to object" (which object?) std::string * sptr = std::launder(static_cast<std::string*>(ptr)); //pointer arithmetic on not created array elements well defined? …


3
用C定义字符串的细节是什么?
我应该为我的一个班回答一个家庭作业问题。具体来说,我应该说是否将C中的某些数组视为字符串。根据本文(https://www.geeksforgeeks.org/strings-in-c-2/),我知道字符串是一个字符数组,结尾是空终止符。 我的主要困扰是询问如下数组的问题: char c1[] = { 'C', 'S', '\0', '3', '2', '4', '\0' }; 显然这是一个字符数组,末尾有一个空终止符。但是,由于它的中间也有一个空终止符,它是否仍被认为是字符串?这将如何影响字符串? 编辑:根据评论,我提供了问题的实际措辞: “出于将它们用作strcpy(),strncpy(),strcmp(),strncmp()和类似的字符串函数(表示所有适用)的参数的目的,可以将以下哪些数组视为“字符串”?” 编辑:我给我的教授发了电子邮件,因为这个问题的措词似乎模棱两可(正如一些人指出的那样)。如果有人好奇,他告诉我“是的,它是一个字符串。关键是有一个空字符。但是,这当然会影响任何字符串操作;该字符串以空字符结尾。”


2
如何避免有关原始类型的代码重复?
背景 位输入流由字节数组支持。有几种方法可以从该字节数组读取各种强制的原始数组。 问题 有重复的代码。Java缺少原始类型的泛型,因此重复是不可避免的。 码 重复的代码在以下方法中显而易见: @Override public long readBytes(final byte[] out, final int offset, final int count, final int bits) { final int total = offset + count; assert out != null; assert total <= out.length; final long startPosition = position(); for (int i = offset; i < total; …

8
查找人口最多的年份(最有效的解决方案)
给定两个数组;$births包含表明某人出生的出生年份列表,以及$deaths表明某人死亡的死亡年份列表,我们如何找到人口最高的年份? 例如,给定以下数组: $births = [1984, 1981, 1984, 1991, 1996]; $deaths = [1991, 1984]; 人口最高的年份应该是1996,因为3那一年人们还活着,这是所有年份中人口最高的年份。 这是运行的数学公式: | 出生| 死亡 人口| | ------- | ------- | ------------ || | 1981年| | 1 | | 1984年| | 2 | | 1984年| 1984年| 2 | | 1991年| 1991年| 2 | | 1996 | | …

7
如何改善和缩短这段代码?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 3个月前关闭。 此函数采用一串DNA(例如“ GTCA”)并返回包含正确匹配的DNA对的数组。 function pairDNA(dna) { const pairs = [] for (let i = 0; i < dna.length; i ++) { if (dna[i] === "C" | dna[i] === "c") { pairs.push("CG"); } else if (dna[i] === "G"| dna[i] === "g") { pairs.push("GC"); } else if (dna[i] === "T"| …

2
我可以对std :: array使用自定义分配器来获得安全的加密密钥吗?
我知道它std::array是完全分配在堆栈中的,但是这个问题是由需要考虑两点的安全问题引起的: 输入的数据在std::array销毁时将归零或随机化 输入中的数据std::array将被锁定,因此无论是崩溃还是交换内存,它都不会进入磁盘 通常情况下,用std::vector的解决方案是创建一个自定义分配器的是做这些事情。但是,对于std::array,我没有看到如何执行此操作,因此也没有看到这个问题。 我能做的最好的事情是: template <typename T, std::size_t Size> struct SecureArray : public std::array<T, Size> { static_assert(std::is_pod<T>::value, "Only POD types allowed") static_assert(sizeof(T) == 1, "Only 1-byte types allowed") virtual ~SecureArray() { std::vector<uint8_t> d = RandomBytes(Size); // generates Size random bytes std::memcpy(this->data(), d.data(), Size); } } 但这显然缺少内存锁定,std::array这使首先要使用的性能方案变得复杂std::array。 有更好的解决方案吗?

5
如何将一小部分Markdown解析为React组件?
我有Markdown的很小一部分,还有一些我想解析为React组件的自定义html。例如,我想将以下字符串转换为: hello *asdf* *how* _are_ you !doing! today 放入以下数组: [ "hello ", <strong>asdf</strong>, " ", <strong>how</strong>, " ", <em>are</em>, " you ", <MyComponent onClick={this.action}>doing</MyComponent>, " today" ] 然后从React渲染函数返回它(React会将数组正确渲染为格式化的HTML) 基本上,我想让用户选择使用一组非常有限的Markdown来将其文本转换为样式化的组件(在某些情况下是我自己的组件!) 危险地使用SetInnerHTML是不明智的,并且我不想引入外部依赖关系,因为它们都非常繁重,并且我只需要非常基本的功能。 我目前正在做这样的事情,但是它非常脆弱,并且不能在所有情况下都起作用。我想知道是否有更好的方法: function matchStrong(result, i) { let match = result[i].match(/(^|[^\\])\*(.*)\*/); if (match) { result[i] = <strong key={"ms" + i}>{match[2]}</strong>; } return …

7
使用过滤器方法合并两个数组
我停留在显示购物车页面的位置,其中列出了由用户添加到购物车的产品。我有两个数组:一个包含产品详细信息。 productDetails: [ { productID: 1, productTitle: 'Product Title 1', productPrice: 2000 }, { productID: 2, productTitle: 'Product Title 2', productPrice: 5000 }, { productID: 3, productTitle: 'Product Title 3', productPrice: 1000 }, { productID: 4, productTitle: 'Product Title 4', productPrice: 10000 } ], 另一个带有购物车产品详细信息,其产品ID和数量仅由用户选择。 cartProducts: [ { productID: 1, …

4
sizeof如何与对数组的指针取消引用一起工作?
在这里,我有一个指向4个整数的ptr数组arr的指针。ptr指向整个数组。ptr[0]或*ptr指向数组的第一个元素,因此加1即可ptr[0]得出数组第二个元素的地址。 我不明白为什么使用sizeof(ptr[0])给出整个数组的大小16个字节,而不是第一个元素的大小4个字节(ptr[0]指向数组中第一个元素)。 int arr[4] = {0, 1, 2, 3}; int (*ptr)[4] = &arr; printf("%zd", sizeof(ptr[0])); //output is 16
9 c  arrays  pointers 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.