U E D R , A S I H C RSS

AcceleratedC++/Chapter5

1. Chapter 5 Using sequential containers and analyzing strings

  • —ฌƒœ๊นŒง€ vector๋ž‘ string ๊ฐ–๊ณ  ž˜ ๋†€•˜๋‹ค. ด œ ด๊ฒƒ๋“ค„„˜–ด„œ๋Š” ๊ฒƒ„ ‚ดŽด๋ณผ ๊ฒƒด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด„œ ๋ผด๋ธŒ๋Ÿฌ๋ฆฌ ‚ฌšฉ๋ฒ•— ๋Œ€•ด ๋” ๊นŠ๊ฒŒ ด•ด•˜๊ฒŒ ๋ ๊ฒƒด๋‹ค. ๋ผด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ž๋ฃŒ๊ตฌกฐ?•จˆ˜๋งŒ„  œ๊ณต•ดฃผ๋Š” ๊ฒƒด •„๋‹ˆ๋‹ค. ŠผŠผ•œ •„‚ค…ณ๋„ ๋ฐ˜˜•ดค€๋‹ค. ๋งˆน˜ vector˜ ‚ฌšฉ๋ฒ•„ •Œ๊ฒŒ ๋˜๋ฉด, ๋‹ค๋ฅธ๊ฒƒ๋„ ‰ฝ๊ฒŒ ๋ฐฐšธˆ˜ žˆ๋Š”๊ฒƒฒ˜๋Ÿผ...

1.1. 5.1 Separating students into categories

  • f๋œฌ •™ƒ๊ณผ •„๋‹Œ •™ƒœผ๋กœ ๋‚˜๋ˆ  ๋ณดž.
    ~cpp 
    bool fgrade(const Student_info& s)
    {
    	return grade(s) < 60;
    }
    
    vector<Student_info> extract_fails(vector<Student_info>& students)
    {
    	vector<Student_info> pass, fail;
    	for(vector<Student_info>::size_type i = 0; i != students.size() ; ++i)
    	{
    		if(fgrade(students[i]))
    			fail.push_back(students[i]);
    		else
    			pass.push_back(students[i]);
    	}
    	students = pass;
    	return fail;
    }
     
  • ฐธกฐ๋กœ ๋„˜–ด๊ฐ„ students˜  ˆ˜๋ฅผ ๋ชจ๋‘ ฝ–ด๋“ค—ฌ„œ, 60 ด•˜๋ฉด fail ๋ฒก„—, •„๋‹ˆ๋ฉด pass ๋ฒก„— ๋„€ ๋‹คŒ, students ๋ฒก„ฐ๋ฅผ pass๋ฒก„ฐ๋กœ ๋ฐ”๊ฟ”ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  fail„ ๋ฆฌ„•ดค€๋‹ค. ฆ‰ students—๋Š” f •„๋‹Œ •™ƒ๋งŒ, ๋ฆฌ„ด๋œ vector—๋Š” f ๋œฌ •™ƒ๋งŒ ๋‚จ•„žˆ๊ฒŒ ๋˜๋Š” ๊ฒƒด๋‹ค. ๋ญ”๊ฐ€ ข€ ‚๋ฆฌ๋ฆฌ•˜๋‹ค. ๋” ‰ฌšด ๋ฐฉ๋ฒ•ด žˆ„ ๋“ฏ•˜๋‹ค.

  • 1.1.1. 5.1.1 Erasing elements in place

  • ๊ทธ๋ ‡๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๊ฐ€ žˆ๋Š” ๊ฒƒด๋‹ค. for๋ฃจ”„๊ฐ€ ๋๋‚ ๋•Œ—๋Š” ค‘๋ณต๋˜๋Š” ๋‘๊ฐœ˜ ๋ฒก„ฐ๊ฐ€ กดžฌ•˜๋Š” ๊ฒƒด๋‹ค. ๊ทธ๋ž˜„œ šฐ๋ฆฌ๊ฐ€ “ธ ๋ฐฉ๋ฒ•€ ๋งŒ•ฝ f๋ฉด fail— ถ”๊ฐ€•˜๊ณ , f •„๋‹ˆ๋ฉด ๊ทธ ž๋ฆฌ—„œ ง€šฐ๋Š” ๊ฒƒด๋‹ค. ๋ฐ˜๊ฐ‘๊ฒŒ๋„ ด๋Ÿฐ ๊ธฐ๋Šฅด žˆ๋‹ค. ๊ทผ๋ฐ กธ๋ผ ๋А๋ฆฌ๋‹ค. ž…๋ ฅ ๋ฐด„˜ –‘ด ปคˆˆ˜๋ก „๋Šฅ  €•˜๋Š” ๊ธ‰๊ฒฉ•˜๋‹ค. ๋ฒก„—„œ๋Š” ค‘๊ฐ„— •˜๋‚˜๋ฅผ ง€šฐ๋ฉด, ๋ฉ”๋ชจ๋ฆฌ๋ฅผ †ตงธ๋กœ ๋‹ค‹œ • ๋‹น•˜๊ณ , ง€›Œฃผ๋Š” ง“„ •ด•ผ•œ๋‹ค. O(n*n)˜ ‹œ๊ฐ„ด •„š”•œ๊ฒƒœผ๋กœ •Œ๊ณ  žˆ๋‹ค. ๋ฒก„ฐ๋Š” ž„˜  ‘๊ทผด ๊ฐ€๋Šฅ•œ ๋Œ€‹ , ค‘๊ฐ„ ‚ฝž…ด๋‚˜ ค‘๊ฐ„ ‚ญ œ˜ ผฌ๋จผŠค๋ฅผ ฌ๊ธฐ•œ ๊ฒƒด๋‹ค. ด œ๋ถ€„—ฌ๋Ÿฌ๊ฐ€ง€ ๋ฐฉ๋ฒ•„ ‚ดŽด๋ณผ ๊ฒƒด๋‹ค.
  • ๋จผ € ๋А๋ฆฌง€๋งŒ, ง๊ด€ ธ ๋ฐฉ๋ฒ•๋ถ€„‚ดŽด๋ณดž.
    ~cpp 
    vector<Student_info> extract_fails(vector<Student_info>& students)
    {
    	vector<Student_info> fail;
    	vector<Student_info>::size_type i = 0
    	while(i != students.size()) {
    		if(fgrade(students[i])) {
    			fail.push_back(students[i]);
    			students.erase(students.begin() + i);
    		} else
    			++i;
    	}
    	return fail;
    }
     
    • ™œ students.erase(studentsi) •˜ง€ •Š๋Š”๊ฐ€? ๋ชจ๋“  ปจ…Œด๋„ˆ— ผ๊ด€„„  œ๊ณต•˜๊ธฐ œ„•ด„œ๋ผ๊ณ  •œ๋‹ค. ๋ฐ”๋กœ ๋ฐ˜๋ณตž๋ผ ๋ถˆ๋ฆฌšฐ๋Š” ๊ฒƒ„ ดšฉ•ด, (ฌธ„ฐ๋ณด๋‹ค ๋ฐ˜๋ณตž๊ฐ€ ๋จผ € ๋‚˜˜ค๋„š”.) ๋™ผ•œ ๋ฐฉ๋ฒ•œผ๋กœ  œ–ด๋ฅผ • ˆ˜ žˆ๋Š” ๊ฒƒด๋‹ค.
    • ๊ทธ๋ฆผ ๋ณด๋ฉด •Œ๊ฒ ง€๋งŒ, ๋ณต‚ฌ ๊ฒ๋‚˜๊ฒŒ •ด๋Œ„๋‹ค. •˜๋‚˜ ง€šธ๋•Œ๋งˆ๋‹ค ๊ทธ ๋’ค— žˆ๋Š”๊ธ ๋‹ค ๋ณต‚ฌ•˜๋Š” ๊ฒƒด๋‹ค. ๋งŒ•ฝ— ๋ชจ๋‘ failด๋ผ๋ฉด? ๋”ฐ•˜๋‹ค.
    • ๋˜•œ, ง€›ŒคŒœผ๋กœจ ปจ…Œด๋„ˆ˜ ‚ฌดˆ๊ฐ€ ๋ณ€•œ๋‹ค. ฆ‰ ๋ชจ๋“  •™ƒ„ ๋‹ค ๊ฒ€‚ฌ•˜ง€ ๋ชป• ˆ˜๋„ žˆ๋‹ค. ๊ทธ๋ž˜„œ ๋‹คŒ๊ณผ ๊ฐ™ด ๋ฐ”๊ฟ”ฃผ–ด•ผ •œ๋‹ค.

  • ~cpp 
    vector<Student_info> extract_fails(vector<Student_info>& students)
    {
    	vector<Student_info> fail;
    	vector<Student_info>::size_type i = 0;
             vector<Student_info>::size_type size = students.size();
    	while(i != size) {
    		if(fgrade(students[i])) {
    			fail.push_back(students[i]);
    			students.erase(students.begin() + i);
    		} else
    			++i;
    	}
    	return fail;
    }
     

    1.1.2. 5.1.2 Sequential versus random access

    • œ„˜ ๋ฒก„ฐ๋Š” ž„˜  ‘๊ทผด •„š”•˜ง€ •Š๋‹ค. ๊ทธ๋ƒฅ ˆœฐจ œผ๋กœ  ‘๊ทผ•  ๋ฟด๋‹ค. ž„˜ ‘๊ทผ„ ฌ๊ธฐ•จœผ๋กœจ ƒ๊ธฐ๋Š” —ฌ๋Ÿฌ๊ฐ€ง€ ด๋“ด žˆ๋Š” ปจ…Œด๋„ˆ๊ฐ€ žˆ„ ๊ฒƒด๋‹ค. ๊ทธ๋ณด๋‹ค ๋จผ € ปจ…Œด๋„ˆ๋ฅผ šจ๊ณผ œผ๋กœ  œ–ด• ˆ˜ žˆ๊ฒŒ •ดฃผ๋Š” ๋ฐ˜๋ณตž๋ผ๋Š” ๊ฒƒ„ ๋จผ € ‚ดŽด๋ณดž.

    1.2. 5.2 Iterators

  • —ฌƒœ๊ป ž˜“ฐ๋˜ ๋ฒก„˜• ๋ณ€ˆ˜n€ ๋ฒก„˜ n๋ฒˆงธ š”†Œ๋ฅผ ๋ง•œ๋‹ค. ง€๊ธˆ๊นŒง€ •˜๋˜๊ฐ ๋ณด๋ฉด ๋ฃจ”„ •ˆ—„œ ++i ด๊ฐ๋ฐ–— —†๋‹ค. ฆ‰ ˆœฐจ œผ๋กœ๋งŒ ๋†€•˜๋‹ค๋Š” ๋œปด๋‹ค. šฐ๋ฆฌ๋Š” •Œง€๋งŒ ปดŒŒผ๋Ÿฌ๋Š” •Œ๊ธธด —†๋‹ค. —ฌ๊ธฐ„œ ๋ฐ˜๋ณตž(Iterators)๋ผ๋Š” ๊ฒƒ„ •Œ•„๋ณดž.
    • ปจ…Œด๋„ˆ™€ ปจ…Œด๋„ˆ •ˆ˜ š”†Œ๋ฅผ ™•ธ
    • ๊ทธ š”†Œ •ˆ—  €žฅ๋˜–ด žˆ๋Š” ๊ฐ’ ™•ธ
    • ปจ…Œด๋„ˆ •ˆ˜ š”†Œ๋“ค ‚ฌด๋ฅผ ™”๋‹ค๊ฐ”๋‹ค • ˆ˜ žˆ๋Š” ๊ธฐ๋Šฅ
    • ปจ…Œด๋„ˆ๊ฐ€ šจ๊ณผ œผ๋กœ ๋‹ค๋ฃฐˆ˜ žˆ๋Š” —ฐ‚ฐ๋งŒ„ ๊ฐ€ง€๊ณ  ๋†€๋„๋ก  œ•œ•˜๋Š” ๊ธฐ๋Šฅ
  • ธˆ˜ๆ›ฐ : STL„ ‚ฌšฉ• ๋•Œ—๋Š” ๋ฐ˜๋ณตž๋ฅผ ดšฉ•˜๋Š” ๊ฒƒด ‘œค€ด๋ผ •œ๋‹ค.
  • ธ๋Šค๋กœ ง  ฝ”๋“œ๋ฅผ ๋ฐ˜๋ณตž๋กœ ง  ฝ”๋“œ๋กœ ๋ฐ”๊พผ ˜ˆ
    ~cpp 
    for(vector<Student_info>::size_type i = 0 ; i != students.size() ; ++i)
    	cout << students[i].name << endl;		
     

    ~cpp 
    for(vector<Student_info>::const_iterator i = students.begin() ; i != students.end() ; ++i)
    	cout << (*i).name << endl;
     

  • ƒ†Œ•œ๊ฒŒ ๋ณดดง€ •Š๋Š”๊ฐ€? •˜๋‚˜•˜๋‚˜”ฉ ‚ดŽด๋ณดž.

  • 1.2.1. 5.2.1 Iterator types

  • ‘œค€ ปจ…Œด๋„ˆ—  •˜ ๋˜–ด žˆ๋Š” ๋ฐ˜๋ณตž˜ ข…๋ฅ˜๋Š” ๋‹คŒ ๋‘๊ฐ€ง€๋‹ค.
    • const_iterator : ๊ฐ’„ ๋ณ€๊ฒฝ‹œ‚คง€ •Š๊ณ  ˆœšŒ• ๋•Œ
    • iterator : ๊ทธ๋ƒฅ ˆœšŒ• ๋•Œ
  • „ธ๋ถ€ ธ ๊ด ๋ชฐ๋ผ๋„ ๋œ๋‹ค.
  • •„𔗐 ๋”ฐ๋ผ iterator—„œ const_iterator๋กœ บŠคŒ…๋œ๋‹ค. ๋ฐ˜๋Œ€๋Š” •ˆ๋œ๋‹ค.

  • 1.2.2. 5.2.2 Iterator Operations

  • begin()๊ณผ end()๋Š” ๊ฐ๊ฐ ปจ…Œด๋„ˆ˜ ๋งจ ฒ˜Œ š”†Œ๋ฅผ ๊ฐ€๋ฆฌ‚ค๋Š” ๋ฐ˜๋ณตž™€, ๋งจ ๋งˆง€๋ง‰—„œ •œนธ ง€๋‚œ ๊ฒƒ„ ๊ฐ€๋ฆฌ‚ค๋Š” ๋ฐ˜๋ณตž๋ฅผ ๋ฆฌ„•ดค€๋‹ค.
  • ++i : ๊ทธ๋ƒฅ “ฐ๋ฉด ๋œ๋‹ค. ๊ฐ ปจ…Œด๋„ˆ๋งˆ๋‹ค ๊ตฌ˜„€ ๋‹ค๋ฅผ…Œง€๋งŒ, ๋†€๋ผšธ  •๋„˜ ถ”ƒ™”๋กœ ‚ฌšฉž๋“ค๋กœ •˜—ฌ๊ธˆ ๋ชจ๋ฅด๊ณ  จ๋„ ๋˜๊ฒŒ ๋งŒ๋“ค—ˆ๋‹ค. ๋ฐ˜๋ณตž๋ฅผ •˜๋‚˜”ฉ ฆ๊ฐ€‹œ‚ค๋Š” ๊ฒƒด๋‹ค.
  • '*' : —ญฐธกฐ —ฐ‚ฐž๋ผ ๋ถˆ๋ฆฌšด๋‹ค.
  • (*i).name : ๋ฐ˜๋ณตž i๊ฐ€ ๊ฐ€๋ฆฌ‚ค๋Š” š”†Œ˜ ๋ฉค๋ฒ„ name„ ๋ง•œ๋‹ค. ๊ด„˜ธ๋ฅผ ๊ผญ จฃผž. šฐ„ ˆœœ„๊ฐ€ .ด *๋ณด๋‹ค ๋†’๊ธฐ ๋•Œ๋ฌธ— —๋Ÿฌ๋‚œ๋‹ค.

  • 1.2.3. 5.2.3 Some syntactic sugar

  • (*i).name ด๋ ‡๊ฒŒ •˜๊ธฐ ๊ท€ฐฎ๋‹ค. i->name ด๋ ‡๊ฒŒ •˜๋ฉด ๋œ๋‹ค.

  • 1.2.4. 5.2.4 The meaning of students.erase(students.begin() + i)

  • begin()ด ๋งจ ฒ˜Œ š”†Œ๋ฅผ ๊ฐ€๋ฆฌ‚ค๋Š” ๋ฐ˜๋ณตž๋ฅผ ๋ฆฌ„•ดค€๋‹ค๊ณ  –ˆ๋‹ค. ๊ทธ๋Ÿผ i๋ฅผ ๋”•˜๋ฉด? i๋ฒˆš”†Œ๋ฅผ ๊ฐ€๋ฆฌ‚ค๋Š” ๋ฐ˜๋ณตž๊ฐ€ ๋ฆฌ„ด๋ ๊ฒƒด๋‹ค.
  • •˜ง€๋งŒ ž„˜  ‘๊ทผ„ ง€›•˜ง€ •Š๋Š” ปจ…Œด๋„ˆ—๋‹ค  €ง“•˜๋ฉด •ˆ๋œ๋‹ค. + —ฐ‚ฐž๊ฐ€  •˜๋˜–ด žˆง€ •Š๊ธฐ ๋•Œ๋ฌธ— ปดŒŒผ —๋Ÿฌ ๋œฌ๋‹ค.

  • 1.3. 5.3 Using iterators instead of indices

  • ธ๋Šค “ฐ๋˜ •จˆ˜๋ฅผ ๋ฐ˜๋ณตž๋กœ๋งŒ ๋ฐ”๊ฟ” ๋ณดž.
    ~cpp  
    vector<Students_Info> extract_fails(vector<Student_info>& students)
    {
    	vector<Student_info> fail;
    	vector<Student_info>::iterator iter = students.begin();
    	while(iter != students.end()) {
    		if(fgrade(*iter)) {
    			fail.push_back(*iter);
    			iter = students.erase(iter);
    		} else
    			++iter;
    	}
    	return fail;
    }
     
  • •„๊นŒ๋Š” const˜€๋Š”๋ฐ ด๋ฒˆ—” ™œ •„๋‹ˆ๋ƒ๊ณ ? ปจ…Œด๋„ˆ •ˆ— žˆ๋Š” ๊ฒƒ„ ง€šฐง€ •Š๋Š”๊ฐ€. ฆ‰ ๋ณ€˜•‹œ‚จ๋‹ค๋Š” ๊ฒƒด๋‹ค.
  • ๋˜ ‹ ๊ธฐ•œ๊ฒŒ ๋ณดธ๋‹ค. ™œ students.erase(iter) •ดค€๊ฒƒ„ ๋˜ iter—๋‹ค ๋Œ€ž…•ดฃผ—ˆ๋Š”๊ฐ€? ‚ญ œ•˜๋ฉด ๋ฐ˜๋ณตž๊ฐ€ ๋ชจ๋‘ ๊ฐ‹ ๋˜๊ธฐ ๋•Œ๋ฌธด๋‹ค. ง€šด ๋’ท๋ถ€๋ถ„€ ๋ชฝ๋•… žฌ• ๋‹น •ด•ผ•˜๋‹ˆ... ง€๊ธˆ€ ๋ฌดŠจ ๋งธง€ ๋ชฐ๋ผ๋„ ข‹๋‹ค. ๊ทธ๋ ‡๋‹ค๋Š” ๊ฒƒ๋งŒ •Œ•„๋‘ž. erase๋Š” ๋ฐฉ๊ธˆ ง€šด ๋ฐ”๋กœ ๊ทธ ๋ถ€๋ถ€„ ๋ฆฌ„•ดค€๋‹ค.
  • ๋˜ ฝ”๋“œ ตœ ™” •œ๋‹ค๊ณ  ๋‹คŒ๊ณ  ๊ฐ™€ ‚ฝˆ„ •˜๋Š” ‚ฌ๋žŒ๋„ žˆ„ ๊ฒƒด๋‹ค.
    ~cpp 
    while(iter != students.end())
    /*...*/
     
  • „
    ~cpp 
    vector<Student_info>::iterator iter = students.begin(). end_iter = students.end();
    while(iter != end_iter)
    /*...*/
     
  • ด๋ ‡๊ฒŒ ๋งด๋‹ค. •˜ง€๋งŒ •ˆ๋œ๋‹ค. •„๊นŒ ๋ง–ˆ๋“ฏด, •˜๋‚˜ ง€šฐ๋ฉด ๊ทธ ๋’ค˜ ๋ฐ˜๋ณตž๋Š” ๋ชจ๋‘ ๊ฐ‹ ๋˜๊ธฐ ๋•Œ๋ฌธ—, ๋ฏธ๋ฆฌ  €žฅ•ด๋†“€ end_iter๋Š” “ธ๋ชจ๊ฐ€ —†–ด„๋‹ค. “ฐ๋ ˆ๊ธฐ ๊ฐ’ด ๋‚จ๋Š” ๊ฒƒด๋‹ค.

  • 1.4. 5.4 Ranking our data structure for better performance

  • ๋ฒก„ฐ๋Š” ž„˜  ‘๊ทผ„ ง€›•˜๋Š” ๋Œ€‹ —, ค‘๊ฐ„ ‚ฝž…, ‚ญ œ˜ „๋Šฅด ๊ผฌ๋ž๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ค‘๊ฐ„ ‚ฝž…, ‚ญ œ๊ฐ€ ตœ ™”๋œ ƒˆ๋กœšด ž๋ฃŒ๊ตฌกฐ๋ฅผ ƒ๊ฐ•ด ๋ณดž.

  • 1.5. 5.5 The list type

  • ๋ฐ”๋กœ list๋‹ค. ค‘๊ฐ„ ‚ฝž…๊ณผ ‚ญ œ๋ฅผ ƒˆ˜‹œ๊ฐ„ ๋‚ด— ˆ˜–‰• ˆ˜ žˆ๋‹ค. ด œ vector๋กœ ง  ฝ”๋“œ๋ฅผ list๋กœ ง  ฝ”๋“œ๋กœ ๋ฐ”๊ฟ”๋ณดž. ๋ฐ”๋€๊ฒŒ ๋ณ„๋กœ —†๋‹ค. vector๊ฐ€ list๋กœ ๋ฐ”๋€๊ฐ ๋ง๊ณ ๋Š”... ๋‹ค‹œ •œ๋ฒˆ ๋ง•˜ง€๋งŒ list๋Š” ž„˜  ‘๊ทผ„ ง€›•˜ง€ •Š๋Š”๋‹ค. ๋”ฐ๋ผ„œ vector—„œ “ฐ๋˜๊ฒƒฒ˜๋Ÿผ [] “ฐ๋ฉด •ˆ๋œ๋‹ค.

  • 1.5.1. 5.5.1 Some important differences

  • ๋ฒก„ฐ๋Š” ‚ฝž…, ‚ญ œ • ๋•Œ๋งˆ๋‹ค ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ชฝ๋•… žฌ• ๋‹น•œ๋‹ค. ๋”ฐ๋ผ„œ ~~.end()๋Š” ๋ฒ„๊ทธ˜ ˜จƒด ™ผ๋‹ค. ๊ณ„† ๋ฐ”๋€Œ๋ฏ€๋กœ... •˜ง€๋งŒ list๋Š” ‚ฝž…, ‚ญ œ•œ๋‹ค๊ณ  ๋ชฝ๋•… žฌ• ๋‹น•˜ง€ •Š๋Š”๋‹ค. ๊ทธ๋ž˜„œ ๋น ๋ฅธ ๊ฒƒด๋‹ค. ๋˜•œ ž„˜  ‘๊ทผ„ ง€›•˜๋Š” ปจ…Œด๋„ˆ๋งŒ “ธˆ˜ žˆ๋Š” ‘œค€ •Œ๊ณ ๋ฆฌฆ˜ sort๋„ ๋‹น—ฐžˆ “ธˆ˜ —†๋‹ค. ๊ทธ๋ž˜„œ list˜ ๋ฉค๋ฒ„•จˆ˜๋กœ sort๊ฐ€ žˆ๋‹ค. ๋‹คŒ๊ณผ ๊ฐ™ด จฃผž.
    ~cpp 
    students.sort(compare);
     

  • 1.5.2. 5.5.2 Why bother?

  • ‘œ๋ฅผ ๋ณด๋ฉด •Œ๊ฒ ง€๋งŒ, ŒŒผ ฌ๊ธฐ๊ฐ€ ปคˆˆ˜๋ก vector˜ š”†Œ ‚ฝž…, ‚ญ œ ‹œ๊ฐ„€ ๋น„•ฝ œผ๋กœ ฆ๊ฐ€•œ๋‹ค. list๋Š” ๋ณ„๋กœ •ˆ ฆ๊ฐ€•œ๋‹ค.

  • 1.6. 5.6 Taking strings apart

  • string๋„ vectorฒ˜๋Ÿผ “ธˆ˜ žˆ๋‹ค. ‹ค œ๋กœ๋Š” vector<char>ด๋‹ˆ... vector˜ ๋Œ€๋ถ€๋ถ„˜ ๊ธฐ๋Šฅ„ ง€›•œ๋‹ค. []๊ณผ ๋ฐ˜๋ณตž๋Š” ๋ฌผ๋ก  size() ๋“๋“๋„..
  • ๊ทธ๋Ÿฌ๋ฉด„œ ฃผ–ด„ string„ ๊ณต๋ฐ„ ๊ธฐค€œผ๋กœ ž๋ฅธ ๋‹คŒ vector— ๋„–ด„œ ๋ฆฌ„•˜๋Š” ˜ˆ œ๋ฅผ ๋ณด—ฌฃผ๊ณ  žˆ๋‹ค. ๋ณ„๋กœ ๋ณผ๊—†๋‹ค.
  • 1.7. 5.7, 5.8

  • ๊ทธ๋ƒฅ string๊ฐ€ง€๊ณ  ™”๋ฉด— ๋ฟŒ๋ฆฌ๋Š” ดƒ•œ žฅ๋‚œน˜๊ณ  žˆ๋‹ค. ๋ณ„๋กœ ๋ณผ๊—†๋‹ค.
  • ง€๊ธˆ ๋ณด๋‹ˆ๊นŒ “ธ๋งŒ•œ Œด •˜๋‚˜ žˆ๋‹ค. ๋ฐ”๋กœ •œ ปจ…Œด๋„ˆ— ๋‹ค๋ฅธ ปจ…Œด๋„ˆ˜ ๋‚ดšฉ๋“ค„„ฃ๋Š” ˜ˆ œด๋‹ค.
    ~cpp 
    for(vector<string>::const_iterator i = bottom.begin(); i != bottom.end(); ++i)
        ret.push_back(*it);
     
  • ด๋ ‡๊ฒŒ “ธ๊ฒƒ„,
    ~cpp 
    ret.insert(ret.end(), bottom.begin(), bottom.end());
     
  • ด๋ ‡๊ฒŒ ๊ฐ„๋‹จžˆ “ธˆ˜ žˆ๋‹ค.


  • Valid XHTML 1.0! Valid CSS! powered by MoniWiki
    last modified 2021-02-07 05:22:25
    Processing time 0.0343 sec