map<char *, int> sym_addr;
map<char *, int> sym_tbl;
void set_map(map<char *, int> & sym_tbl)
{
sym_addr = sym_tbl;
}
위 할당에 문제가 있습니까?지도가있는 할당 연산자
map<char *, int> sym_addr;
map<char *, int> sym_tbl;
void set_map(map<char *, int> & sym_tbl)
{
sym_addr = sym_tbl;
}
위 할당에 문제가 있습니까?지도가있는 할당 연산자
더 좋은 방법은 std::string
에 키를 변경하는 것입니다 : 복사 할 경우 std::map< std::string, int>
는 const를 참조하여 해당 개체를 전달할 : 그
typedef std::map< std::string, int> myMapType;
myMapType sym_addr;
myMapType sym_tbl;
void set_map(const myMapType & sym_tbl)
{
sym_addr = sym_tbl;
}
기타, 아무런 문제가 없습니다. map :: operator =는 한 맵의 내용을 다른 맵으로 복사하는 데 사용됩니다.
으로 바꾸는 것이 더 나을 것 같지 않은데 코드를 간단하게하기 위해'typedef std :: map
const
참조로 인수를 전달해야합니다. 그렇지 않으면 const
으로 선언 된지도를 복사하지 못하게됩니다.
또한 char*
을 키로 사용하면 정확히 이해할 수 있습니다. 키는 주소 인이며 내용은 포함하지 않습니다. 문자열을 값으로 색인화하려면 std::string
을 키로 사용하십시오.
문제점 :'sym_addr '의 키가 누출 될 수 있습니다. 하지만 아마도 당신이 요구하는 것이 아닙니다. – kennytm
달성하고자하는 것은 무엇입니까? –
"모든 문제"를보다 구체적으로 정의하십시오. – thiton