작성
·
262
0
안녕하세요! 저는 교수님의 강의를 완강하고, 알고리즘 책을 통해서 공부하고 있습니다.
제가 vector stl을 이해하기로는, vector<int> n[20] 이런 식으로 사용하는 것으로 알고 있는데요.
근데, 해당 책에서는 vector <int> thePouring( vector<int> capacitied, vector<int>bottle )이런 식으로
리스트의 크기를 적는 대신에, 벡터들을 괄호를 묶는 경우도 존재하더라구요.
제가 비 전공자라 어디 여쭤볼 곳도 없고, 여러 권의 책들을 찾아봐도 설명이 있지 않아서 이렇게 여쭤보게 되었습니다.
혹시, 실례가 되지 않는다면, 짧게라도 알려주실 수 있으신지요?
감사합니다.
답변 5
0
0
vector<int> thePouring(vector <int> capacities,
vector<int> bottles,
vector<int> fromId,
vector<int> toId)
{ ........
........
return bottles;
}
위에 코드에서 thePouring은 kiwiJuiceEasy 클래스의 멤버함수입니다. 변수명이 아닙니다.
즉 thePouring은 함수명이며 이함수는 호출하는 곳에 vector<int>형 자료를 return(반환) 하겠다는 함수입니다.
함수를 선언할 때는 함수명 앞에 반환하는 자료형을 붙입니다.
만약 정수형 자료를 반환하는 함수는 int thePouring(int x, float y, char z){..............} 이런식으로 선언합니다.
여기서 int x, float y, char z 는 값을 전달받는 함수의 매개변수입니다.
즉 위에 vector<int> thePouring(vector<int> capacities, vector<int> bottles) 이런식으로 함수를 선언하면 반환하는 자료형은 정수형 vector이고, 매개변수로 정수형 벡터 capacities와 bottles를 선언해 벡터 자료를 전달받겠다는 의미입니다.
이 설명이 잘 이해가 안되시면 C++ 클래스와 함수에 대해 배우셔야 합니다.
인프런에 "두들낙서의 C/C++"강좌가 무료이니 이 강좌의 함수부분과 클래스 부분을 들으면 좋을 것 같습니다.
0
0
답변주셔서 감사합니다 교수님
제가 공부하고 있는 책은 "TOPCODER 알고리즘 트레이닝"입니다.
해당 소스 코드는 다음과 같습니다. (책 기준 72pg)
class kiwiJuiceEasy{
public:
vector <int> the Pouring(vector <int> capacities,
vector<int> bottles,
vector<int> fromId,
vector<int> toId)
{
for(int i =0; i<fromId.size(); i++){
int f = fromId[i];
int t = toId[i];
int space = capacities[t] - bottles[t];
if(space >= bottles[f]){
int vol = bottles[f];
bottles[t] += vol;
bottles[f] =0;
}
else{
int vol = space;
bottles[t]+= vol;
bottles[f]-= vol;
}
}
return bottles;
}
};
0
제가 알고있는 벡터 생성자 호출은 아래와 같습니다.
int main(void) {
int n=5, x=1;
vector<int> a{1, 2, 3, 4, 5};// 직접 초기화
vector<int> b;// b는 빈 컨테이너
vector<int> c(n); // c는 기본값(0)으로 초기화된 n개의 원소를 갖은 벡터
vector<int> d(n, x); // d는 x값으로 초기화된 n개의 원소를 갖은 벡터
vector<int> e(a); // e는 a벡터를 복사한다.
vector<int> v(a.begin()+1, a.end()-1); // v는 a의 1번 인덱스부터 3번 인덱스까지 복사
for(auto x : v) cout<<x<<" "; //2 3 4출력
return 0;
}
질문하신 내용은 저도 처음 보는 생성자 호출입니다.
질문하신 코드가 있는 전체코드를 다시 올리면 분석해 보겠습니다.
그리고 vector<int> n[20]은 빈벡터 객체 20개를 만드는 것이고, vector<int> n(20)은 0으로 초기화된 크기가 20인 벡터 객체 하나를 만드는 것이니 구별해서 사용하시기 바랍니다.