관리 메뉴

흐에에에에에엥

String 문자열 뒤에 추가하는 방법과 시간 소요 비교 본문

코딩/C++

String 문자열 뒤에 추가하는 방법과 시간 소요 비교

김미이이인서어어어억 2024. 4. 21. 15:55

안녕하세요 오늘은 C++ string 문자열을 맨 뒤에 추가하는 방법을  소개하고 소요되는 시간들을 비교해보겠습니다. 

 

코테 풀다가 시간 초과 뜨는 경우가 있는데 과연 어떤 차이가 있을까 궁금해서 비교해보게 되었습니다. 

 

1. + 덧셈 연산자

단순하게 덧셈 쓰는 경우입니다. 

string test1;
test1 += "-";

2. append() 함수 

string 자료구조 내에 있는 append 함수 사용하는 방법입니다. 

string test2;
test2.append("-");

3. insert() 함수

string 자료구조 내에 있는 insert 함수 사용하는 방법입니다. 

여기서 i는 추가할 index를 의미합니다. 

string test3; 
test3.insert(i, "-");

4.push_back() 함수

string 자료구조 내에 있는 append 함수 사용하는 방법입니다. 

string test4;
test4.push_back("-");

 

 

시간 비교 

결론적으로 뒤에 추가할 때는 push_back함수가 제일 빠릅니다. 

 

테스트 코드는 이렇습니다. 

#include <iostream>
#include <string>
#include <ctime>
using namespace std;

int main()
{
	clock_t start, finish;
	double duration;

	string test1, test2, test3, test4;

	start = clock();
	for (int i = 0; i < 1000000; i++) test1 += "-";
	finish = clock();
	duration = (double)(finish - start) / CLOCKS_PER_SEC; 
	cout << "문자열에 덧셈 연산자 사용시 : " << duration << "\n";

	start = clock();
	for (int i = 0; i < 1000000; i++) test2.append("-");
	finish = clock();
	duration = (double)(finish - start) / CLOCKS_PER_SEC;
	cout << "문자열에 append 함수 사용 시 측정한 시간 : " << duration << "\n";

	start = clock();
	for (int i = 0; i < 1000000; i++) test3.insert(i, "-");
	finish = clock();
	duration = (double)(finish - start) / CLOCKS_PER_SEC;
	cout << "문자열에 insert 함수 사용 시 측정한 시간 : " << duration << "\n";

	start = clock();
	for (int i = 0; i < 1000000; i++) test4.push_back('-');
	finish = clock();
	duration = (double)(finish - start) / CLOCKS_PER_SEC;
	cout << "문자열에 push_back 함수 사용 시 측정한 시간 : " << duration << "\n";

	return 0;
}

 

 

결과는 다음과 같습니다. 

문자열에 덧셈 연산자 사용시 : 0.094
문자열에 append 함수 사용 시 측정한 시간 : 0.089
문자열에 insert 함수 사용 시 측정한 시간 : 0.11
문자열에 push_back 함수 사용 시 측정한 시간 : 0.056

 

 

이 결과를 통해서 내장함수가 압도적으로 빠른 것을 확인할 수 있습니다. 

insert만 아니면,, 

 

이상입니다. 

 

감사합니다. 

 

'코딩 > C++' 카테고리의 다른 글

VS(Visual Studio) 사용 시 주의 점 - 메모리 관련  (0) 2023.07.17
C++ null character  (0) 2023.03.14
[C++] template 함수 사용법 - LNK2019 에러  (1) 2020.10.03
Comments