List<int[]>的用法

问题描述

List<int[]>aaa=newList<int[]>();int[]bbb=newint[4];int[,]pic1_point={{1,2,3,4,5},{2,3,4,5,6}};int[,]pic2_point={{3,4,5,6,7},{4,5,6,7,8}};for(intr=0;r<5;r++){bbb[0]=pic1_point[0,r];bbb[1]=pic1_point[1,r];bbb[2]=pic2_point[0,r];bbb[3]=pic2_point[1,r];aaa.Add(bbb);}

我想实现的功能是aaa[0]中存储的是{1,2,3,4},aaa[1]中存储的是{2,3,4,5}以此类推,但结果是aaa[0]到aaa[4]中存储的都是{5,6,7,8},我百思不得其解,求大神指点!!

解决方案

解决方案二:
List<int[]>aaa=newList<int[]>();//int[]bbb=newint[4];int[,]pic1_point={{1,2,3,4,5},{2,3,4,5,6}};int[,]pic2_point={{3,4,5,6,7},{4,5,6,7,8}};for(intr=0;r<5;r++){int[]bbb=newint[4];bbb[0]=pic1_point[0,r];bbb[1]=pic1_point[1,r];bbb[2]=pic2_point[0,r];bbb[3]=pic2_point[1,r];aaa.Add(bbb);}

解决方案三:
引用1楼xuzuning的回复:

List<int[]>aaa=newList<int[]>();//int[]bbb=newint[4];int[,]pic1_point={{1,2,3,4,5},{2,3,4,5,6}};int[,]pic2_point={{3,4,5,6,7},{4,5,6,7,8}};for(intr=0;r<5;r++){int[]bbb=newint[4];bbb[0]=pic1_point[0,r];bbb[1]=pic1_point[1,r];bbb[2]=pic2_point[0,r];bbb[3]=pic2_point[1,r];aaa.Add(bbb);}

为什么这样就可以了?可以给我讲一下么?
解决方案四:
因为数组是引用类型也就是说,你的代码中向aaa添加的5个bbb实际上就是一个
解决方案五:
简单一句话说,就是你add进List之前,new一下再赋值,再add进List
解决方案六:
你把同一个数组加入4次,里面当然是同一种值.可以复制一下再加入.aaa.Add((int[])bbb.Clone());

时间: 2024-11-10 08:02:00

List&amp;lt;int[]&amp;gt;的用法的相关文章

c++中vector&amp;amp;lt;int&amp;amp;gt;和vector&amp;amp;lt;int*&amp;amp;gt;的用法区别_C 语言

在使用STL容器(比如map.list.vector等)的时候,是用放一个对象还是放一个对象指针,即是用vector<int>还是vector<int*>,这里的vector可以换成其他的容器,int可以换成其他基本类型,也可以自定义的数据结构或类. 首先,要说明的是,这两种方式,怎么用都可以实现功能,把一组整型数放到容器里.先看看两种方式在使用的时候的区别. 1.vector<int> 复制代码 代码如下: vector<int> vecTemp;for

Java枚举(enum) 详解7种常见的用法_java

JDK1.5引入了新的类型--枚举.在 Java 中它虽然算个"小"功能,却给我的开发带来了"大"方便.  用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法. public enum Color { RED, GREEN, BLANK, YELLOW } 用法二:switch JDK1.6之前的switch语句只支持int

memcpy用法

memcpy原型:extern void *memcpy(void *dest, void *src, unsigned int count); 用法:#include <string.h> 功能:由src所指内存区域复制count个字节到dest所指内存区域. 说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针. 注意:与strcpy相比,memcpy并不是遇到'\0'就结束,而是一定会拷贝完n个字节. 举例: // memcpy.c #include <stdio

给大家推荐几篇技术文章

给大家推荐几篇文章,希望大家能够喜欢! HTML5/CSS3实现虚拟键盘功能 详解HTML5获取电池状态信息的方法 详解基于共享存储(SAN)的MySQL高可用方案 盘点近年来struts2产生的安全漏洞 System.arraycopy用法详解 Java线程java.lang.Thread.State状态详解 RAW Socket 获取流经本地网卡的所有数据包 LSP网络劫持介绍 统计textarea输入个数并限制输入长度特效提示 从马云的角度看个人站长的未来在哪里 Google Guava库

C字符串函数strlen

原型:extern int strlen(char *s); 用法:#include <string.h> 功能:计算字符串s的长度 说明:返回s的长度,不包括结束符NULL. 举例: // strlen.c #include <syslib.h> #include <string.h> main() { char *s="Golden Global View"; clrscr(); printf("%s has %d chars"

在WordPress中使用wp_count_posts函数来统计文章数量_php技巧

做一个全站统计是不是很酷?长久的博客越来越少,何不给自己的一个统计,看看自己在这个博客上努力了多少,不但给自己也给游客,wp_count_posts是在 WordPress 中用来统计文章数量的函数,可以统计所有类型的文章(post)和页面(page). 描述wp_count_posts是在 WordPress 中用来统计文章数量的函数,可以统计所有类型的文章(post)和页面(page). 使用 //获取文章数量 $postcount = wp_count_posts(); //获取页面数量

android数据绑定框架介绍

github地址 地址 背景 数据绑定框架有很多,其实我就看过谷歌官方的数据绑定框架,官方的框架用起来的时候,觉得不是很顺手,侵入性还比较强.而且也一直纠结彷徨,从心底里质疑数据绑定框架的价值,到底给我们开发带来了什么,实用吗,可维护吗? 某一天的早晨突然灵光一现,决定自己去试试开发一个自己喜欢的数据绑定框架,经过没日没夜的艰苦风斗(当然是开玩笑的),中间反复修改设计,最后尘埃落定.虽然这个框架已经出世,也在生产环境试运行了一些页面,但是我对于数据绑定框架的价值,始终抱有质疑的态度,所以今天我将

memmove 和 memcpy的区别

memcpy和memmove()都是C语言中的库函数,在头文件string.h中,作用是拷贝一定长度的内存的内容,原型分别如下:void *memcpy(void *dst, const void *src, size_t count); void *memmove(void *dst, const void *src, size_t count);  他们的作用是一样的,唯一的区别是,当内存发生局部重叠的时候,memmove保证拷贝的结果是正确的,memcpy不保证拷贝的结果的正确. 第一种情

秋色园QBlog技术原理解析:Web之页面处理-内容填充(八)

文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用 2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程 3: 秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三) --介绍如何实现无后缀URL 4: 秋色园QBlog技术原理解析:UrlRewrite之URL重定向体系(四) --介绍URL如何定位到处理程序 5: 秋色园QBlog技术原理解析:Module之页面基类设计(五) --介绍创建