C++에서 벡터로 구성된 벡터 만들기
- 기본 생성자를 사용하여 C++에서 벡터로 구성된 벡터 만들기
-
rand
함수를 사용하여 벡터 벡터를 C++에서 임의 값으로 채우기 - 범위 기반 루프를 사용하여 C++에서 벡터 벡터의 각 요소 수정
이 기사에서는 C++에서 벡터 벡터를 만드는 방법을 설명합니다.
기본 생성자를 사용하여 C++에서 벡터로 구성된 벡터 만들기
벡터로 구성된 벡터를 만드는 것은 2 차원 행렬을 구성하는 것을 의미하므로 생성자 매개 변수로 지정할LENGTH
및WIDTH
상수를 정의합니다. 벡터의 정수 벡터를 선언하는 데 필요한 표기법은vector<vector<int> >
입니다 (첫 번째<
뒤의 공백은 가독성을위한 것입니다).
다음 예에서는 기본적으로 4x6 차원 행렬을 선언합니다.이 행렬의 요소는[x][y]
표기법을 사용하여 액세스하고 리터럴 값을 사용하여 초기화 할 수 있습니다. 주어진 위치로 at
메서드를 두 번 호출하여 2d 벡터의 요소에 액세스 할 수도 있습니다.
#include <iomanip>
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::setw;
using std::vector;
constexpr int LENGTH = 4;
constexpr int WIDTH = 6;
int main() {
vector<vector<int> > vector_2d(LENGTH, vector<int>(WIDTH, 0));
vector_2d[2][2] = 12;
cout << vector_2d[2][2] << endl;
vector_2d.at(3).at(3) = 99;
cout << vector_2d[3][3] << endl;
return EXIT_SUCCESS;
}
출력:
12
99
rand
함수를 사용하여 벡터 벡터를 C++에서 임의 값으로 채우기
벡터로 구성된 벡터는 여러 선형 대수 또는 그래픽 워크 플로에서 자주 사용됩니다. 따라서 임의의 값으로 초기화 된 2 차원 벡터를 갖는 것이 일반적입니다. 이니셜 라이저 목록을 사용하여 비교적 큰 2D 벡터를 초기화하는 것은 번거로울 수 있으므로 루프 반복과 rand
함수를 사용하여 임의의 값을 생성해야합니다.
이 경우에는 암호화에 민감한 작업이 수반되지 않으므로 현재 시간 인수로 시드 된 rand
함수는 충분히 임의의 값을 생성합니다. [0, 100)
간격으로 난수를 생성하고 동시에 각 요소를 콘솔에 출력합니다.
#include <iomanip>
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::setw;
using std::vector;
constexpr int LENGTH = 4;
constexpr int WIDTH = 6;
int main() {
vector<vector<int> > vector_2d(LENGTH, vector<int>(WIDTH, 0));
std::srand(std::time(nullptr));
for (auto &item : vector_2d) {
for (auto &i : item) {
i = rand() % 100;
cout << setw(2) << i << "; ";
}
cout << endl;
}
cout << endl;
return EXIT_SUCCESS;
}
출력:
83; 86; 77; 15; 93; 35;
86; 92; 49; 21; 62; 27;
90; 59; 63; 26; 40; 26;
72; 36; 11; 68; 67; 29;
범위 기반 루프를 사용하여 C++에서 벡터 벡터의 각 요소 수정
일반적으로 앞의 예에 표시된대로 std::vector
를 사용하여 2 차원 행렬을 선언하는 것은 지연 시간이 중요한 애플리케이션의 경우 상당히 비효율적이며 컴퓨팅 작업이 많을 수 있습니다. 시간에 민감한 애플리케이션은 일반적으로 구식 C 스타일[][]
표기법을 사용하여 행렬을 선언합니다. 더하기 측면에서std::vector
행렬은 다음 예제와 같이 범위 기반 루프로 반복 될 수 있습니다.
#include <iomanip>
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::setw;
using std::vector;
constexpr int LENGTH = 4;
constexpr int WIDTH = 6;
int main() {
vector<vector<int> > vector_2d(LENGTH, vector<int>(WIDTH, 0));
for (auto &item : vector_2d) {
for (auto &i : item) {
i = rand() % 100;
cout << setw(2) << i << "; ";
}
cout << endl;
}
cout << endl;
// Multiply Each Element By 3
for (auto &item : vector_2d) {
for (auto &i : item) {
i *= 3;
}
}
for (auto &item : vector_2d) {
for (auto &i : item) {
cout << setw(2) << i << "; ";
}
cout << endl;
}
return EXIT_SUCCESS;
}
출력:
83; 86; 77; 15; 93; 35;
86; 92; 49; 21; 62; 27;
90; 59; 63; 26; 40; 26;
72; 36; 11; 68; 67; 29;
249; 258; 231; 45; 279; 105;
258; 276; 147; 63; 186; 81;
270; 177; 189; 78; 120; 78;
216; 108; 33; 204; 201; 87
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook