Tiny Bunny
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป/C++

[c++] vector push_back๊ณผ emplace_back

by soonybutter 2024. 6. 27.
728x90

 
 

1. push_back๊ณผ emplace_back์˜ ์ฐจ์ด

 

 

 push_back๊ณผ emplace_back์€ vector์•ˆ์— ๊ฐ์ฒด๋ฅผ ๋„ฃ๋Š” ๋ฐฉ์‹์— ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

 push_back() ํ•จ์ˆ˜๋Š” ๊ฐ์ฒด๋ฅผ ์ง‘์–ด๋„ฃ๋Š” ํ˜•์‹์ด๋‹ค.

 

 ๋”ฐ๋ผ์„œ ๊ฐ์ฒด๊ฐ€ ์—†๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด '์ž„์‹œ ๊ฐ์ฒด'๊ฐ€ ์žˆ์–ด์•ผํ•œ๋‹ค.

 ์ด๋ฏธ ๋งŒ๋“ค์–ด์ง„ ๊ฐ์ฒด๋ฅผ ๋„ฃ๋Š” ํ•จ์ˆ˜์ธ ๊ฒƒ์ด๋‹ค. ์ด๋•Œ ์ธ์ž๋Š” v์˜ ๋์— ๊ณ„์†ํ•ด์„œ ์ถ”๊ฐ€๋œ๋‹ค.

vector<int>v;

for (int i = 0; i < 5; i++)
{
	int a;
	cin >> a;

	v.push_back(a);
}

//v์— 5๊ฐœ์˜ intํ˜• ์ธ์ž๋ฅผ ๋ฐ›์Œ.

 

 

๋ฐ˜๋ฉด์— emplace_back()ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ, 

ํ•จ์ˆ˜๋ฅผ ๊ตฌ์„ฑํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์ •๋ณด๋จผ์ € ๋„ฃ์–ด์ฃผ๊ณ  ํ•จ์ˆ˜ ๋‚ด์—์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์„œ ์‚ฝ์ž…ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

ํ•จ์ˆ˜ ๋‚ด๋ถ€์— ์ž„์‹œ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋ผ์„œ ์ž๋ฆฌ๋ฅผ ์žก์•„์ค€๋‹ค๋Š” ํŠน์ง•์„ ๊ฐ€์ง„๋‹ค.

 

๋”ฐ๋ผ์„œ emplace_back()์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ถˆํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด ํ•„์š”์—†๊ณ , ๋ถˆํ•„์š”ํ•œ ๊ฐ์ฒด ์ƒ์„ฑ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

 

 

 

์˜ˆ์‹œ 

 2์ฐจ์› ๋ฐฑํ„ฐ์— pushbackํ•˜๋Š” ์ƒํ™ฉ์œผ๋กœ ๊ฐ€์ •ํ•˜๋ฉด,


case 1

vector<vector<int>>v;

for (int i = 0; i < 3; i++)
{
   vector<int>tmp;

   for (int k = 0; k < 3; k++)
   {
      int a;
      cin >> a;
      tmp.push_back(a);
   }

    v.push_back(tmp);
}

 
 
case 2

vector<vector<int>>v;

for (int i = 0; i < 3; i++)
{
   v.emplace_back();

   for (int k = 0; k < 3; k++)
   {
      int a;
      cin >> a;

      v[i].push_back(a);

      
   }
}

 
 
case 3

vector<vector<int>>v;

for (int i = 0; i < 3; i++)
{
   vector<int>tmp;

   v.push_back(tmp);

   for (int k = 0; k < 3; k++)
   {
      int a;
      cin >> a;

      v[i].push_back(a);

      
   }
}

 

 

 

2.  emplace_back  ๊ณผ  push_back

 

push_back
vector<vector<int>>v;
v.push_back(5);

 

push_back์€ ์œ„์˜ ์ฝ”๋“œ๊ฐ€ ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

(๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์€ push_backํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.)

 

๊ทธ๋Ÿฌ๋‚˜ ์•„๋ž˜์™€ ๊ฐ™์ด 2์ฐจ์› ๋ฐฐ์—ด์˜ ์ธ์ž๊ฐ’์œผ๋กœ ๋ฐฐ์—ด์„ ํ†ต์งธ๋กœ ๋„ฃ์–ด์ฃผ๋Š” ๊ฒƒ์€ ๊ฐ€๋Šฅํ•˜๋‹ค.

vector<vector<int>> vec;
vec.push_back({1,3});

 

 

 

empace_back
vector<vector<int>>v;
v.emplace_back(5);

emplace_back ํ•จ์ˆ˜๋Š” ์œ„์˜ ์ฝ”๋“œ๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

 (๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น๋„ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.)

 

 ํ•˜์ง€๋งŒ ์•„๋ž˜์™€ ๊ฐ™์ด 2์ฐจ์› ๋ฐฐ์—ด์„ ํ†ต์งธ๋กœ ๋„ฃ์–ด์ฃผ๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

vector<vector<int>> vec;
vec.emplace_back({1,3});

 

 

 

 

 

 

 

ํ‹€๋ฆฐ ๋ถ€๋ถ„์ด๋‚˜ ์ด์ƒํ•œ ๋ถ€๋ถ„์ด ์žˆ์œผ๋ฉด ๋Œ“๊ธ€๋กœ ์ง€์ ํ•ด์ฃผ์„ธ์š”! ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค :)

 

728x90

TOP

Designed by ํ‹ฐ์Šคํ† ๋ฆฌ