반응형

2016/12 167

[구글 Go 하자] 35. 배열의 대입 연산은 값 복사, 슬라이스는 참조

[구글 Go 하자] 35. 배열의 대입 연산은 값 복사, 슬라이스는 참조 안녕하세요. 언제나 휴일, 언휴예요. 이번에는 배열과 슬라이스의 차이점 중에 개발자가 실수하기 쉬운 대입 연산을 알아보기로 해요. 선언할 때와 인덱스 연산으로 원소에 접근하는 것은 배열과 슬라이스의 공통점이예요. 그런데 대입 연산에서는 차이가 있어요. 배열끼리 대입 연산을 하면 원소 값을 모두 복사합니다. 하지만 슬라이스는 내부적으로 참조 형식이어서 같은 개체를 참조할 뿐이예요. 예를 들어 배열 arr1에 1, 2, 3 값의 원소를 갖고 있을 때 arr2에 대입하면 arr2 배열도 1, 2, 3 값을 갖는 상태로 변해요. 이 때 arr2[0]=8 연산을 수행하면 arr2는 예상처럼 원소 값은 8, 2, 3으로 변해요. 하지만 arr..

[구글 Go 하자] 34.슬라이스도 초기 값을 설정할 수 있어요.

[구글 Go 하자] 34.슬라이스도 초기 값을 설정할 수 있어요. 안녕하세요. 언제나 휴일, 언휴예요. 슬라이스도 생성하면서 값을 초기 설정할 수 있어요. 이 때는 원소 개수를 명시하지 않다는 점 빼고는 배열 초기화와 같아요. var name[] type = []type{값 목록} 이전 예제에서는 5명의 학생 성적을 배열에 갖고 있는 상태에서 출발했었죠. 이번에는 슬라이스를 선언하면서 5명의 학생 성적으로 초기값을 설정한 상태에서 나머지 5명의 성적을 최종 사용자로부터 입력받는 예제 코드예요. // 슬라이스 초기화 후에 성적 입력package main import "fmt" func main() { var scores []int = []int{90, 88, 76, 80, 99} var i int fmt...

[구글 Go 하자] 33. 슬라이스가 꽉 찰 때 append 함수를 사용하면 알아서 늘려줘요.

33. 슬라이스가 꽉 찰 때 append 함수를 사용하면 알아서 늘려줘요. 안녕하세요. 언제나 휴일, 언휴예요. 앞에서 슬라이스의 저장소 용량은 동적이라고 말했어요. 그런데 좀 더 정확히 말하면 저장소의 용량은 자동으로 확장하는 제법 똑똑한 컬렉션이예요. 만약 꽉 차 있는 상태의 슬라이스에 append 함수를 이용하여 자료를 추가하면 저장소의 용량은 알아서 늘려줘요. 현재 용량이 0이면 1로 늘려주고 그 외에는 현재 용량의 두 배로 늘어나요. 다음의 예제 코드는 이를 확인하는 간단한 코드예요. //슬라이스가 꽉 찰 때 append 함수 사용package main import "fmt" func main() { var s []int fmt.Printf("용량:%d 원소 개수:%d\n", cap(s), le..

[구글 Go 하자] 32. 슬라이스에 append 함수로 순차 보관

[구글 Go 하자] 32. 슬라이스에 append 함수로 순차 보관 안녕하세요. 언제나 휴일, 언휴예요. 슬라이스의 원소 개수는 len 함수를 통해 확인할 수 있고 저장소 용량은 cap으로 확인할 수 있어요. 그리고 append 함수를 이용하여 순차적으로 보관할 수 있어요. 다음 소스 코드는 5명의 학생 성적은 배열에 이미 갖고 있는 상태에서 슬라이스를 생성하고 나머지 5명의 성적은 최종 사용자로부터 입력받는 예제 코드예요. // 5명 성적은 슬라이스에 초기 설정, 5명의 성적은 입력받기 package main import "fmt" func main() { var arr [5]int = [5]int{90, 88, 76, 80, 99} var scores []int = make([]int, 5, 10) ..

[구글 Go 하자] 31. 동적 배열, 슬라이스 기초

[구글 Go 하자] 31. 동적 배열, 슬라이스 기초 안녕하세요. 언제나 휴일, 언휴예요. Go언어에서는 배열 크기를 동적으로 늘어나는 슬라이스를 제공하고 있어요. 슬라이스 형식을 선언할 때는 var 키워드와 슬라이스 이름[] 원소 형식을 명시하세요. var name[]type 배열 선언과 비슷하지만 원소 개수를 명시하지 않는다는 부분이 다르죠. 그리고 슬라이스에 저장소를 할당할 때는 make 함수에 인자료 []원소 형식과 원소 개수와 저장소 용량를 전달합니다. var name[] type = make([]type, elements no, capacity size) 이 때 저장소의 용량은 생략할 수 있어요. 주의할 점은 슬라이스의 원소에 접근할 때는 원소 개수만큼만 접근할 수 있다는 것이죠. 저장소의 용..

[C++ 무료 동영상 강의] 61. 클래스 간의 관계

[C++ 무료 동영상 강의] 61. 클래스 간의 관계 다루는 내용일반화 관계(Generalization),집합 관계(Aggregation), 구성 관계(Composition),직접 연관 관계(Directed Association),연관 관계(Association),의존 관계(Dependency), 실현 관계(Realization) 앞으로 프로그래밍 관련 글은 새롭게 개설한 언제나 휴일 전용 사이트에서 만나보세요. 2017년 1월 1일까지 이 곳의 프로그래밍 자료는 http://ehpub.co.kr 로 옮길 예정입니다. 본문[디딤돌 C++] 61. 클래스 간의 관계

[고구려 12대 왕] 중천왕, 사랑스런 관나부인을 바다에 버리다.

중천왕, 사랑스런 관나부인을 바다에 버리다. 중천왕(248~270)은 고구려 12대 왕입니다. 삼국사기에 보면 중천왕 4년에 관나부인을 가죽 주머지에 넣어 서해 바다에 던져 죽게 하였다고 합니다. 이 사건은 왕비의 질투에서 출발하였습니다. 당시 적국이였던 위나라에서 머리 긴 여자를 구한다고 왕에게 얘기를 하는데 이를 들은 중천왕은 움찔할 수 밖에 없었습니다. 그 이유는 얼굴이 빼어나고 중천왕의 사랑을 받는 관나부인의 긴 머리가 떠올랐기 때문입니다. 관나부인도 이 얘기를 듣고 왕비가 자신을 헐뜯기 위해 만들어낸 얘기라고 중천왕에게 말합니다. 중천왕은 두 여인의 싸움에 이러지도 저러지도 못하였습니다. 그러던 어느 날 관나부인은 왕비가 자신을 죽여 가죽 주머니에 넣어 바다에 버리려 한다고 중천왕에게 말합니다...

교육/국사 2016.12.16

[Java 언어 활용] 3.12 HashMap 클래스

[Java 언어 활용] 3.12 HashMap 클래스 Java의 HashMap 클래스는 Map 인터페이스 기반의 구현 클래스입니다. 그리고 해쉬 테이블 자료 구조를 표현한 클래스입니다. 앞에서 다루었던 HashSet 클래스도 해쉬 테이블 자료 구조를 표현한 클래스였습니다. HashSet 클래스는 Collecion 인터페이스 기반의 구현 클래스로 단일 개체를 보관하는 클래스이며 HashMap 클래스는 key와 value를 쌍으로 보관하는 클래스입니다. 보관할 때 key를 해쉬 테이블 내부의 해쉬 함수를 통해 보관하여 검색할 때 key로 검색하면 빠르게 value를 찾을 수 있는 장점을 갖고 있습니다. HashMap 형식 변수 선언 및 개체 생성할 때는 제네릭 형식 인자로 키와 값을 명시하여 표현합니다. H..

[Java 언어 활용] 3.11 Map 인터페이스

[Java 언어 활용] 3.11 Map 인터페이스 HashSet 클래스를 이용하여 자료를 보관할 때 원하는 자료를 판별하기 위해 반복자를 사용한다면 선형 자료구조와 큰 차이를 보이지 않습니다. 위 예처럼 단순 값을 보관하고 존재하는지 판별하기 위해 contains 메서드를 사용하면 빠릅니다. 하지만 특정 클래스 형식 개체를 보관하고 주요 멤버로 개체를 검색하려면 contains 메서드를 사용하여 해결할 수 없고 반복자를 사용해야 할 것입니다. 이를 위해 Java에서는 Map 인터페이스를 제공하고 있고 이를 기반으로 구현 클래스를 이용하면 좋은 성능을 갖는 응용을 개발할 수 있습니다. Collection 인터페이스는 특정 자료를 보관하는 컬렉션에서 제공해야 할 기능을 약속하였습니다. 대신 Map 인터페이스..

[C++ 무료 동영상 강의] 60. 템플릿 클래스

[C++ 무료 동영상 강의] 60. 템플릿 클래스 다루는 내용템플릿 클래스, 동적 배열 클래스 작성 앞으로 프로그래밍 관련 글은 새롭게 개설한 언제나 휴일 전용 사이트에서 만나보세요. 2017년 1월 1일까지 이 곳의 프로그래밍 자료는 http://ehpub.co.kr 로 옮길 예정입니다. 본문[디딤돌 C++] 60. 템플릿 클래스

반응형