반응형
1. 벡터를 선언할 때부터 몇행, 몇열을 사용할 지 아는 경우
만일 다음과 같이 벡터를 선언과 동시에 메모리를 할당하고 0으로 초기화하고 싶다면 ??
아래와 같이 소스코드를 작성하면 된다.
vector<vector<int> > v1(6, vector<int>(5, 0)); // 6칸 만들고, 그 안을 vector<int>(5,0)으로 채운다
// vector<int>(5,0) : vector를 5칸 만들고, 그 안을 0으로 채운다.
v1[0][0] = 1; //벡터의 메모리가 이미 할당되어 있으니 바로 접근이 가능하다.
v1[5][4] = 20; //벡터의 메모리가 이미 할당되어 있으니 바로 접근이 가능하다.
cout << "v1[0][0] = " << v1[0][0] << '\n';
cout << "v1[5][4] = " << v1[5][4] << '\n';
벡터를 선언하면서 이미 메모리할당까지 했기때문에 push_back()메서드로 변수를 넣어줄 필요없이 바로 넣어주면 되는 것이다.
2. 벡터를 선언할 때 몇개의 열을 사용하는지만 아는 경우
만일 2차원 벡터를 원하는 열만큼만 선언하되, 각 행안에는 메모리할당도, 값도 넣고싶지 않을때는?
vector<vector<int> > v1(6); // 벡터를 6칸 만든다.
v1[0].push_back(99); //벡터에 메모리가 할당되어있지 않으므로 push_back을 통해 할당하여 값을 넣어야한다.
cout << "v1[0][0] = " << v1[0][0] << '\n'; // 99
cout << endl;
cout << endl;
벡터라는 공간만 할당되었지 그 안에 값이 들어가있는 상태가 아니므로 값을 넣을때는 위와같이 push_back()메서드를 통해 값을 할당해야한다.
3. 벡터를 선언할 때 행과 열을 몇개까지 사용하는지 모르는 경우
필요에 따라 행과 열을 추가하기 위해 일단은 벡터의 행과 열도 생성하지 않는 경우는?
vector<vector<int> > v1;
v1.push_back(vector<int>());
v1[0].push_back(10);
cout << "v1[0][0] = " << v1[0][0] << '\n';
v3.push_back(vector<int> ()); 명령을 수행하면서 열이 하나 추가된다.
반응형
'Programming > C,C++' 카테고리의 다른 글
[C++ 소켓 스레드통신] 스레드클래스를 직접 만들고 소켓통신 구현하기 (0) | 2020.03.30 |
---|---|
[C/C++] 배열과 벡터 속도차이 비교 테스트 (0) | 2020.03.22 |
[C/C++, 시간측정법]C언어(visual studio) 시간측정법 (0) | 2020.02.11 |
[C/C++]C언어 소스 최적화(시간효율, 메모리효율성 증대) (0) | 2020.02.11 |
[C/C++] assert 란 (0) | 2020.02.11 |