2014-01-25 3 views
1

문자열 2 차원 배열을 다음과 같은 방식으로 함수에 전달합니다. 맞습니까? 더 잘 할 수 있습니까?문자열 2 차원 배열을 함수에 전달합니다.

#include<iostream> 
#include<string> 
using namespace std; 

void print_name(string name[]) 
{ 
    cout<<name[0]; 
} 

int main() 
{ 
    string name[4]; 
    name[0] = "abc"; 
    name[1] ="xyz"; 
    name[2] = "pqr"; 
    name[3]= "xyq"; 

    print_name(name); 
    return 0; 
} 
+0

그것은 더 문자열이 기본적으로 배열 인 경우에도 2 차원 배열이 아닌 문자열 배열로 생각할 수 있습니다. – Dani

+1

여기에 어떤 문제도 보이지 않습니다. 아마도'벡터 name (4)'를 사용하는 것이 더 나을 것입니다. – herohuyongtao

답변

2

C++의 경우 더 좋은 방법은 std::vector을 매개 변수로 전달하는 것입니다.

void print_name(const std::vector<std::string>& name) 

std::vector<std::string> name{"abc", "xyz","pqr","xyq"}; 

print_name(name); 
+0

여기에 'const'가 필요합니까? 'const'가 없어도 그것을 바꿀 수는 없지요, 그렇죠? – herohuyongtao

+0

@herohuyongtao는 참조를 놓쳤다. –

+0

단순히'void print_name (벡터 이름)'을 사용하지 않는 것이 어떻습니까? – herohuyongtao

1

C 스타일 배열을 전달의 문제는 어디에서 끝나는 전화 기능을 알고하지 않습니다. 당신은 고정 된 크기의 배열을 사용해야하는 경우에는 더 좋은 방법은 std::array<std::string,4>을 통과하는 것입니다 : 없음 경우

void print_name(std::vector<std::string>& names) ... 

:

void print_name(std::array<std::string,4>& names) ... 

std::vector<std::string>이 허용 사용하는 경우, 그것은 당신의 코드에 더 많은 유연성을 제공 할 당신의 print_name가 알 수 있도록 당신을 위해 위의 작품은, 배열과 함께 배열의 항목 수를 통과 고려하는 방법 항목은 얻을 수

void print_name(std::string names[], int count) ... 
+0

흠, 제 생각에, 당신이 맞습니다. 나는 벡터 문자열을 사용해야합니다 ... Thx는 당신의 반응에 많은 도움이됩니다. – user765443

관련 문제