벡터를 사용하여 1~5까지 숫자 저장, 첫 번째 요소 3으로 바꾸는 것
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> v;
for (int i = 1; i <= 5; i++)
v.push_back(i);
vector<int>::iterator it = v.begin();
*it = 3;
for (it = v.begin(); it != v.end(); ++it)
cout << *it << " ";
return 0;
}
여기서 1부터 5까지를 벡터에 추가해줍니다. 그리고 iterator 반복자 it를 선언해주는데요.
vector<int>::iterator it = v.begin(); 은 벡터 v의 첫 번째 요소를 가리키는 반복자를 생성하는 역할을 합니다. begin() 함수는 벡터의 첫 번째 요소를 가리키는 반복자를 반환하고 이 반복자를 변수 it에 할당함으로써 벡터의 첫 번째 요소를 가리키는 반복자를 사용할 수 있게 됩니다.
이후에는 *it = 3과 같이 해당 반복자를 통해 요소에 접근하고 값을 변경할 수 있습니다. 즉 위 코드에서는 벡터의 첫 번째 요소를 가리키는 반복자를 생성하고, 이를 사용하여 첫 번째 요소의 값을 3으로 변경하고, 모든 요소를 출력하는 것입니다.
벡터 생성 및 반복자
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<string> vec;
vector<string> vec2;
vec.push_back("India ");
vec.push_back("UP ");
vec.push_back("Nodia ");
vec2 = vec;
vector<string>::reverse_iterator iter = vec2.rbegin();
while (iter != vec2.rend())
{
cout << *iter;
++iter;
}
return 0;
}
두 개의 문자열 벡터를 생성하고, 하나의 벡터를 다른 벡터로 복사한 후, 역방향 반복자를 사용하여 역순으로 요소를 출력하는 코드입니다.
vector vec, vec2를 선언한 다음 push_back으로 각 문자를 입력을 해줍니다.
그 다음 vec2 에 vec 의 모든 요소를 복사합니다. 그 다음 vector<string>::reverse_iterator iter = vec2.rbegin(); 을 통해 vec2 벡터의 역방향 반복자를 생성하여 iter에 할당합니다. 이때 역방향 반복자는 베겉의 마지막 요소를 가리킵니다.
while문을 통해 첫 번째 요소를 가리키며 끝이 날 때까지 반복자를 합니다. 이렇게 하면 역순으로 출력이 되게 됩니다.
중복된 숫자 제거 벡터 반환함수
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> removeDuplicates(vector<int> nums)
{
sort(nums.begin(), nums.end());
auto it = unique(nums.begin(), nums.end());
nums.erase(it, nums.end());
return nums;
}
int main()
{
vector<int> nums = { 1, 2, 3, 2, 4, 5, 3, 6 };
vector<int> result = removeDuplicates(nums);
for (int num : result)
cout << num << endl;
cout << endl;
return 0;
}
위 문제 같은 경우 unique를 활용하여 간단하게 풀었습니다.
unique(nums.begin(), nums.end()) 를 사용하면 중복된 숫자를 다 뒤로 보내준 후 중복된 수 중 가장 앞에 있는 수의 주소를 return해주는데요. 그러면 그 값을 erase(it, nums.end())를 통해 제거를 해주시면 됩니다.
그렇게 하면 깔끔하게 해결을 할 수 있습니다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> unionVectors(vector<int> nums1, vector<int> nums2)
{
vector<int> result;
for (int i = 0; i < nums1.size(); i++)
result.push_back(nums1[i]);
for (int i = 0; i < nums2.size(); i++)
result.push_back(nums2[i]);
sort(result.begin(), result.end());
auto it = unique(result.begin(), result.end());
result.erase(it, result.end());
return result;
}
int main()
{
vector<int> nums1 = { 1, 2, 3 };
vector<int> nums2 = { 3, 4, 5 };
vector<int> result = unionVectors(nums1, nums2);
for (int num : result)
cout << num << " ";
cout << endl;
return 0;
}
'IT 프로그래밍 > 객체지향프로그래밍' 카테고리의 다른 글
[c++] 하나의 정수 n을 받은 후 합을 구하는 프로그램 (0) | 2024.04.17 |
---|---|
[C++] 양의 정수 n을 받은 후 합을 구하는 프로그램 (0) | 2024.04.17 |
[C++] static정의 참조 배열에 대한 예시 문구 (0) | 2024.04.17 |
객체지향프로그래밍 그룹액티비티 2문제 (0) | 2024.04.16 |
[C++] 피보나치 수열 초보자용 만들기 (0) | 2024.04.10 |