벡터: 리스트처럼 배열쓰기(1080)

6751 단어 cppcpp

파이썬이었으면 굉장히 쉬웠을,, 문제같지만
cpp에서는 파이썬의 find가 있나?? 하는 의문이 들었는데
있었다!
algorithim헤더를 사용하면 됐다
string 자체에 find 함수가 있었다,,,, 생고생 하지말고
파이썬 처럼 index메서드를 사용하면 된다ㅎㅎ

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;



int main() {

	vector<char> alphaArr;
	vector<int> result;
	result.assign(26, -1);
	for (int i = 0; i < 26; i++) {
		alphaArr.push_back('a' + i);
	}

	string str;
	cin >> str;

	for (int i = 0; i < 26; i++) {
		auto charIndex = find(str.begin(), str.end(), alphaArr[i]);
		if (charIndex == str.end()) {
			continue;
		}
		else {
			result[i] = charIndex - str.begin();//인덱스값
			//cout << alphaArr[i] << "는 존재하며 위치는 " << result[i] << "입니다." << endl;
		}

	}

	
	for (int i = 0; i < 26; i++) {
		cout << result[i] << " ";
	}
	
}

벡터 자료구조는 자동으로 메모리가 할당되는 배열로서, 데이터를 할당하거나 제거하기 유용하다.

result.assign(26, -1);
-1로 26개 할당

alphaArr.push_back('a' + i);
벡터에 값 append

auto charIndex = find(str.begin(), str.end(), alphaArr[i]);
string의 처음부터 끝까지 있는 alphaArr[i] 값을 찾아서 iterator(반복자) 반환

result[i] = charIndex - str.begin();
반복자를 정수형의 인덱스 값으로 반환하기 위해 string의 begin()함수 사용

좋은 웹페이지 즐겨찾기