algorithm์ find์ string ์ find๋ ๋ค๋ฆ.
1) algorithm์ find
์ ์
first์ last์์์ ์์์ ๋น๊ต๊ฐ์ ๋น๊ตํ๊ณ ,
์ผ์นํ๋ ์์๊ฐ ์์ผ๋ฉด, ๊ทธ ์ค์์๋ ์ฒซ๋ฒ์งธ ์์๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ฐ๋ณต์๋ฅผ ๋ฐํํจ.
์๋ค๋ฉด, end() ์ดํฐ๋ ์ดํฐ๋ฅผ ๋ฐํํจ.
์ฌ์ฉ๋ฒ
find( begin() , end() , ์ฐพ์ ๋์๊ฐ)
2) string์ find
- ์ ์
: first์ last์์์ ์์๋ฅผ ๋น๊ตํ๊ณ ,
์ผ์นํ๋ ์์๊ฐ ์์ผ๋ฉด, ์์น๊ฐ์ ๋ฐํํจ. ์์ผ๋ฉด string๊ฐ์ฒด.npos๋ฅผ ๋ฐํํจ.
: ๋จ์ด๋ณํ
: 1436 ์ํ๊ฐ๋
์.
auto iter = find(v.begin(), v.end(), target);
iter != end()
์ด๋ ๊ฒ
v.find() : ๋ถ๊ฐ๋ฅํ๋ค!
: auto iter = find(v.begin(), v.end(), target);
์ดํ์ iter ์ v.begin()์ ๋บ์ผ๋ก์ ์ธ๋ฑ์ค ๋ฅผ ์ป์ ์ ์๋ค.
์ด๋๋ iter๊ฐ v.end()์ ์์ ์ ์์ผ๋ฏ๋ก ์์ธ์ฒ๋ฆฌ ํด์ผํ๋ค.
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int main(void) {
vector<int> v{ 1,2,3,4 };
auto iter = find(v.begin(), v.end(), 13);
if (iter != v.end())
{
int index = distance(v.begin(), iter);
cout << index << endl;
}
else
{
cout << "์ปจํ
์ด๋์ ๊ฐ์ด ์์ต๋๋ค." << endl;
}
iter = find(v.begin(), v.end(), 2);
if (iter != v.end())
{
int index = distance(v.begin(), iter);
cout << index << "๋ฒ ์ธ๋ฑ์ค์ ๊ฐ์ด ์์ต๋๋ค. "<< endl;
}
else
{
cout << "์ปจํ
์ด๋์ ๊ฐ์ด ์์ต๋๋ค.";
}
}
find ํจ์์ ๋ฆฌํด๊ฐ์ ๋ฐ๊ฒฌ๋ ๋ฌธ์์ด์ ์์ ์ธ๋ฑ์ค ๊ฐ์ ๋ฐํํ๋ค.
๋ง์ฝ์ ์ฐพ์ง ๋ชปํ์ ๊ฒฝ์ฐ์๋ string:npos๋ฅผ ๋ฐํํ๋ค.
๋ฌธ์์ด ์กด์ฌํ ๊ฒฝ์ฐ
: ๋ฌธ์์ด 12๊ฐ ์ฌ๋ฌ๊ฐ ์์ง๋ง, ๋งจ ์์ ์์นํ ์ธ๋ฑ์ค 3๋ฒ์ ์ถ๋ ฅํ๋ค.
์์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ์.
find("word" , int index )
: index ๋ฒ ์์๋ถํฐ word๊ฐ ์๋์ง๋ฅผ find ํจ.
: ๋ฌธ์์ด 12๊ฐ ๋ช๊ฐ ์๋์ง ์นด์ดํ
์ถ๋ ฅํ๋ผ. : ๋ ์๊ทน stl : p.537