본문 바로가기

기타[etc]/알고리즘

C++ Vector 사용

SMALL

vector 사용법 정리


문제 풀면서 필요한 부분과 함수 사용 정리



 Assign

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
#include <iostream>
#include <vector>
using namespace std;
 
 
int main(){
 
  std::vector<int> first;
  std::vector<int> second;
  std::vector<int> third;
 
/*
 *  assign 할당 방법 3가지
 */
 
//assign(num, value)
first.assign (7,100);             // 7 ints with a value of 100
 
 
std::vector<int>::iterator it;
it=first.begin()+1;
 
 
//assign(begin_iterator, end_iterator)
second.assign (it,first.end()-1); // the 5 central values of first
 
 
 
int myints[] = {1776,7,4};
 
//assign(begin_array, end_array)
third.assign (myints,myints+3);   // assigning from array.
 
std::cout << "Size of first: " << int (first.size()) << '\n';
std::cout << "Size of second: " << int (second.size()) << '\n';
std::cout << "Size of third: " << int (third.size()) << '\n';
return 0;
}
cs




vector.back()

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
#include <iostream>
#include <vector>
using namespace std;
 
 
int main(){
 
  std::vector<int> myvector;
 
 
  /*
   *  back은 맨 뒤의 값을 가져옴. 값을 가져옴!
   */
  myvector.push_back(5);
 
  while (myvector.back() != 0)
  {
    myvector.push_back ( myvector.back() -1 );
  }
  /*
   * 5  5  5  5  5
   * 4  4  4  4  4
   *    3  3  3  3
   *       2  2  2
   *          1  1
   *             0
   */
 
  std::cout << "myvector contains:";
  for (unsigned i=0; i<myvector.size() ; i++)
    std::cout << ' ' << myvector[i];
  std::cout << '\n';
 
  return 0;
 
}
 
cs


vector.begin, vector.end

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
#include <iostream>
#include <vector>
using namespace std;
 
 
 
 
int main(){
 
  std::vector<int> myvector;
 
 
  /*
   *  값을 집어 넣음
   */
 
  for (int i=1; i<=5; i++) myvector.push_back(i);
 
  std::cout << "myvector contains:";
  /*
   *   begin은 시작 점[위치], end는 마지막 점[위치]
   *   1[end]   2   3   4   5  dummy[end]
   */
  for (std::vector<int>::iterator it = myvector.begin() ; it != myvector.end(); it++)
    std::cout << ' ' << *it;
  std::cout << '\n';
 
  return 0;
 
  return 0;
 
}
 
cs




vector.at

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <vector>
 
int main ()
{
  std::vector<int> myvector (10);   // 10 zero-initialized ints
 
  // container의 n 위치에 있는 값에 대한 참조[reference]를 반환
  //[Returns a reference to the element at position n in the vector.]
  
  for (unsigned i=0; i<myvector.size(); i++)
    myvector.at(i)=i;
 
  std::cout << "myvector contains:";
  for (unsigned i=0; i<myvector.size(); i++)
    std::cout << ' ' << myvector.at(i);
  std::cout << '\n';
 
  return 0;
}
cs




vector.erase

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
#include <iostream>
#include <vector>
using namespace std;
 
 
 
int main ()
{
 
  /*
   * iterator erase (iterator position);
   * iterator erase (iterator first, iterator last);
   */
 
   std::vector<int> myvector;
 
   for (int i=1; i<=10; i++) myvector.push_back(i);
 
   // erase the 6th element
   // 하나의 값 지우기
   myvector.erase (myvector.begin()+5);
 
   // erase the first 3 elements:
   // 범위를 지우기
   myvector.erase (myvector.begin(),myvector.begin()+3);
 
   std::cout << "myvector contains:";
   for (unsigned i=0; i<myvector.size(); ++i)
   std::cout << ' ' << myvector[i];
   std::cout << '\n';
 
   return 0;
 
}
 
cs




vector.push_back, pop_back, empty

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
#include <iostream>
#include <vector>
using namespace std;
 
 
 
#include <iostream>
#include <vector>
 
int main ()
{
 
  /*
   *   100    100   100  ---
   *   200    200
   *   300
   *
   *   if empty, vector.empty() retunr value is one
   */
 
   std::vector<int> myvector;
   int sum (0);
   myvector.push_back (100);
   myvector.push_back (200);
   myvector.push_back (300);
 
   while (!myvector.empty())
   {
     sum+=myvector.back();
     myvector.pop_back();
   }
 
   std::cout << "The elements of myvector add up to " << sum << '\n';
 
   return 0;
 
}
 
cs



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
#include <iostream>
#include <vector>
 
 
 
int main ()
{
 
  /*
   *  A -> B -> C
   *  B -> D -> A
   *  C -> A -> D
   *  D -> B -> C
   */
 
   vector<vector<char>> arry(4vector<char>(4,'\x00'));
 
   vector<vector<char>>::iterator it= arry.begin();
 
 
 
   for(std::vector<char>::size_type i = 0; i < arry.size(); i ++){
 
      *(*(it+i)).begin() = 'A' + i;
      //*(*(it+i)).begin()) = 'A' + i;
   }
 
   //A->B->C
   (*it).at(1= 'B';
   (*it).at(2= 'C';
 
 
   // B -> D -> A
   (*(it+1)).at(1= 'D';
   (*(it+1)).at(2= 'A';
 
 
   //C -> A -> D
   (*(it+2)).at(1= 'A';
   (*(it+2)).at(2= 'D';
 
 
   //D -> B -> C
   (*(it+3)).at(1= 'B';
   (*(it+3)).at(2= 'C';
}
cs




Graph Vector

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
#include <iostream>
#include <vector>
using namespace std;
 
 
 
#include <iostream>
#include <vector>
 
 
 
int main ()
{
 
  /*
   *  A -> B -> C
   *  B -> D -> A
   *  C -> A -> D
   *  D -> B -> C
   */
 
   vector<vector<char>> arry(4);
 
   vector<vector<char>>::iterator it= arry.begin();
 
   (*it).push_back('A');
   (*it).push_back('B');
   (*it).push_back('C');
 
 
   (*(it+1)).push_back('B');
   (*(it+1)).push_back('D');
   (*(it+1)).push_back('A');
 
 
   (*(it+2)).push_back('C');
   (*(it+2)).push_back('A');
   (*(it+2)).push_back('D');
 
   /**/
   (*(it+3)).push_back('D');
   (*(it+3)).push_back('B');
   (*(it+3)).push_back('C');
 
 
 
   for(std::vector<int>::size_type i = 0 ; i < arry.size(); i ++){
     vector<char> tmp = (*(arry.begin()+i));
 
     for(std::vector<char>::iterator it = tmp.begin(); it != tmp.end();it++){
       cout << *it << endl;
     }
 
     cout << "\n" << endl;
   }
 
 
}
 
cs

 출처 : http://www.cplusplus.com/reference/vector/vector/pop_back/


LIST