declaration of
int x [y] shadows a parameter
은 실제로 다른 변수를 "숨기고 있음"을 의미합니다.
x
이라는 문자열 인수와 x
이라는 배열을 컴파일러에서 어떻게 구별해야합니까? 그렇지 않습니다! 그들은 둘 다 같은 이름을 가지므로 문자열에 더 이상 액세스 할 수 없습니다.
즉, C++의 배열 크기는 컴파일 타임에 알려 져야한다고 말하면 코드에는 해당하지 않습니다. 일부 컴파일러는 확장 기능을 제공하지만 표준 준수를 유지하려면 벡터를 사용해야합니다.
일부 key
하고 std::map
또는 std::unordered_map
을 조사 할 수있는 value
사이의 관계를 갖고 싶어
void function(std::string x, int y) {
std::vector<int> other_name(y);
}
.
void function(string x, int y) {
std::map<std::string, std::vector<int>> my_map;
my_map[x] = std::vector<int>{1, 2, 3, 4, 5};
}
이 {1, 2, 3, 4, 5}
예 : 귀하의 첫 번째 매개 변수는'문자열 x' 다른 뭔가? 동일한 범위에서 동일한 이름을 가진 선언을 가질 수 없습니다. – displayname
'int x [y]'는'myarray'라는 변수를 선언하지 않습니다. 어쨌든 동적으로 이름 붙여지고 동적으로 크기가 지정된 배열이 필요하면'std :: unordered_map'를 사용하십시오. –
귀하의 기능이 무엇을해야하는지 이해가되지 않습니다. 당신이 그것을 묘사 한 방식은 : 로컬 어레이 (불법적으로 btw)를 선언하는 것을 제외하고는 아무 일도하지 않습니다. 귀하가 성취하려고 시도하는 것에 대해 더 많은 것을 말씀해주십시오. –