문자열을 메서드의 매개 변수로 사용하면 함수 내의 문자열에 대한 변경 내용이 호출 함수에 반영되지 않습니다. 단순한 이유 값으로 전달.메서드의 매개 변수로 문자열과 벡터의 차이
그러나 사용은 벡터는 벡터에 대한 변경 사항은 다시 호출하는 함수에 반영 될 때. 우리는 메모리가 아닌 변수에 주소를 보내는 기준에 의해 호출과 같은 기능 내에서 따라서 변경이 기능
를 호출에 다시 반영 재 그래서 여기 벡터를 통과 않는 내 질문입니다 --------- --------------- 업데이트 --------------------------------
벡터는 참조 용으로 만 전달되어야합니까? 나는 정상적으로 그것을 할 수 없다?
물론 정상적으로 전달할 수 있습니다 (값으로 전달). 그러나 객체를 값으로 전달할 때 새로운 객체가 만들어지고 전달 된 객체가 새 객체에 복사된다는 것입니다. 표준 타입은 크기가 작기 때문에 (char는 1 바이트, short는 2, int는 2 또는 4, long은 4 등) 표준 타입 (char, int, float 등)에 대해서는 ok입니다. 그러나 벡터는 그다지 작지는 않습니다. 다음과 같이 시도하십시오.
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> v;
cout << sizeof(v) << endl;
system("pause");
return 0;
}
내 PC에 출력 12 개가 있습니다. 12 바이트입니다. 그래서 대신에 값으로 전달하는, 나는 4 바이트의 비용
아니요, Java의 모든 요소는 값으로 전달됩니다. 우리는 당신이 논쟁으로 무엇을하는지 알아야 할 것입니다. 매개 변수 변수를 다시 할당하는 것은 호출 코드의 인수에 반영되지 않습니다. –
이것은 C++ 질문일까요? – ajb