2011-09-02 8 views
2

저는 프로그래밍에 익숙하지 않습니다. 배열의 크기를 얻는 방법, 즉 배열 안에 몇 개의 요소가 들어 있는지 알 수 있습니다. 예를 들어 크기 10의 배열을 선언했지만 배열에 3 개의 요소 만 입력하면이 배열의 크기는 어떻게 결정됩니까? 처음에 배치 한 요소가 몇 개인 지 모르겠다면배열의 크기를 얻는 C++

+1

@Phonon : 아니요, Java는 배열에 채운 요소 수를 추적하지 않습니다. –

+0

C++뿐만 아니라 일반적으로 프로그래밍에 대한 기본 지식이 부족한 것처럼 보입니다. 괜찮아.나는 당신이 [좋은 C++ 책] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) –

+0

@R을 읽어야한다고 제안한다. 네 말이 맞아, 나는 그 질문을 잘못 읽었다. – Phonon

답변

7

배열을 선언하면 (예 : int array[10]이면 크기는 항상 10 * sizeof(int)입니다. 몇 번이나 액세스했는지 알 수있는 방법이 없습니다. 수동으로 추적해야합니다.

컨테이너 클래스 사용을 고려해야합니다. std::vector :

std::vector<int> vec; 

vec.push_back(5); 
vec.push_back(10); 
vec.push_back(42); 

std::cout << vec.size() << "\n"; // Prints "3" 
-1

당신은 할 때마다 배열에서 제거 1. 에 의해 증가를 배열로 카운트를 추가 할 때마다 0

으로 초기화 카운터 변수 수를 유지 1.

에 의해 수를 감소

언제든지 배열의 크기를 알 수 있습니다.

+0

왜 대답을 내려야 하죠? 제발 도와주세요. – MduSenthil

-1

제안 :

int[10] arr; 

//init all to null 

for (int i =0; i < 10; i++) 
    arr[i] = 0; 

arr[0]=1; 
arr[2]=5; 

int sz = 0; 

for (int j = 0; j < 10; j++) 
    if (arr[j] != 0) sz++; 
+0

왜 downvote? 기술적으로 나는 부적절한 일을 전혀하지 않았습니다. –

+0

나는 downvote하지 않았지만이 코드는 0이 아닌 요소의 수를 센다. –

1

10 개 개의 요소의 이전 스타일의 배열을 선언 할 경우, 예를 들어, std::string words[10], 배열의 크기는 항상 10 문자열입니다. 새 스타일 (std::array)이 있더라도 고정 크기가됩니다.

std::vector<>을 찾고있을 수도 있습니다. 고정 크기가 아니지만 .size() 방법이 있습니다. 당신이 그것에 세 가지 요소를 추가하면 따라서, 그것은 .size()==3

1

이 ((A)/sizeof 연산자 사전 사용 sizeof 연산자에 당신이 그것을 모르는 가정 (요소 수에) 배열의 크기를 얻을 수있을 것입니다 [0])

다음 예제 프로그램을 참조하십시오. 나는 C를 사용했지만 C++로 잘 옮겨야한다.

#include <stdio.h> 

int main(){ 
    int a[10]; 
    printf("%d elements\n",sizeof(a)/sizeof(a[0])); 
    return 0; 
} 

//output: 10 elements 
+0

사실. 그러나 그것은 OP가 요구하는 것이 아닙니다. –

0

여러 가지 방법이 있지만 정의에 따라 다르다.

사용자가 입력하지 않는 값 (센티널 값이라고도 함)이 있으면 memset과 같은 함수를 사용하여 전체 배열을 사용되지 않은 값으로 설정할 수 있습니다. 그런 다음 목록에서 해당 값과 일치하지 않는 목록의 모든 변수를 계산하여 반복합니다.

다른 방법은 배열이 수정 될 때마다 계산되는 고유 한 배열 클래스를 작성하는 것입니다. 적절한 경우 = 및 [] 함수를 오버로드해야합니다.

사용자가 변수를 추가 할 때 목록을 보거나 개수를 유지하여 동적으로 연결된 목록을 작성할 수도 있습니다.

그러나 배열을 기본 배열로 취하는 경우 실제 시작 상태인지 전혀 알 수 없으며 사용자가 무엇을 기대해야할지 모르는 경우 (이것이 프로그램이 아니라면 발생하지 않아야 함) , 일반적으로 말하자면, 이것을 알 수있는 방법이 있습니다.

관련 문제