vector basic 설명
vector의 random access complexity -> constant O(1)
insertion or removal of elements at the end - constant O(1)
insertion or removal of elements - linear in the distance to the end of the vector O(n)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
#include <iostream>
#include <vector>
/// Dynamic size
class Cat
{
public:
explicit Cat(int age) : mAge{ age } {};
void speak() const
{
std::cout << "meow~" << mAge << std::endl;
}
private:
int mAge;
};
int main()
{
// Dynamic Size by array
// 그러나 delete를 잊어버리면 메모리 leak 발생
// 이를 방지하기 위한 것이 vector임
int* numsPtr = new int[5];
for (int i = 0; i < 5; i++)
{
numsPtr[i] = i;
};
delete numsPtr;
std::vector<int> nums(5);
//std::vector<int> nums{0,1,2,3,4}; 도 가능
for (int i = 0; i < 5; i++)
{
nums[i] = i;
}
std::cout << "nums.size() : " << nums.size() << std::endl;
nums.emplace_back(5);
std::cout << "nums.size() : " << nums.size() << std::endl;
nums.pop_back();
std::cout << "nums.size() : " << nums.size() << std::endl;
//vector iterator
for (std::size_t idx = 0; idx < nums.size(); idx++)
{
std::cout << nums[idx] << std::endl;
}
for (auto itr = nums.begin(); itr != nums.end(); itr++)
{
std::cout << *itr << std::endl;
}
// vector를 iterate 하기 가장 좋은 방법
for (const int& num : nums)
{
std::cout << num << std::endl;
}
// Class 넣기
std::vector<Cat> cats;
cats.emplace_back(Cat(1));
cats.emplace_back(Cat(2));
cats.emplace_back(Cat(3));
cats.emplace_back(Cat(4));
for (const auto& cat : cats)
{
cat.speak();
}
}
|
'C' 카테고리의 다른 글
c++ vector reserve를 통한 capacity 확보->속도향상 (0) | 2021.06.25 |
---|---|
vector time complexity, emplace_back 정리 (0) | 2021.06.25 |
c++ std::function 사용법 (0) | 2021.06.24 |
c++ lambda + stl(filter, sort, remove_if, reduce, vector) (0) | 2021.06.24 |
c++ lambda expression, capture =, & (0) | 2021.06.23 |