String 총정리
C++ string 총정리
Source
int main(){
ios_base::sync_with_stdio(false); cin.tie(nullptr);
/////////////////////////
// C style
/////////////////////////
char k[6] = {'n', 'o', '\0', 'o', 'p', 'e'};
std::cout << k << std::endl;
std::cout << sizeof(k) << std::endl;
std::cout << strlen(k) << std::endl;
char a[] = "nocope";
a[0] = 'd';
std::cout << a << std::endl;
std::cout << sizeof(a) << std::endl;
std::cout << strlen(a) << std::endl;
// Performance first!
const char * b = "nocope"; // in the readonly domain => const must!
// b[0] = 'd'; // error!
std::cout << b << std::endl;
std::cout << sizeof(b) << std::endl; // sizeof pointer : 8 @ 64-bit system
std::cout << strlen(b) << std::endl;
/////////////////////////
// C++ style
/////////////////////////
// General cases!
/*/
std::string c = "nocope";
/*/
std::string c("noc\0ope", 7);
// /*/
std::cout << c << std::endl;
std::cout << sizeof(c) << std::endl;
// std::cout << stdlen(c) << std::endl; // error!
std::cout << c.size() << std::endl;
return 0;
}
Output
no
6
2
docope
7
6
nocope
8
8
6
nocope
32
6
std::string 동작 방식
- 2023년 현재 일반적인 system에서 std::string의 기본 size는 32 byte
- 만약 allocation 되는 character 수가 적어서 32 byte보다 작아지면, heap이 아닌 stack에 올라감
- data()는 C++17부터는 nullptr return이 보장됨
- string_view 라는 것도 있는데, ubuntu에서는 정의가 안된 것(?)으로 나옴;;
KMP 알고리즘, 기초, String Matching
String matching problem 은 O(n) 이다.
코딩테스트, 기초, Palindrome
코딩 테스트, 초급, Add Strings
https://coolwindjo.github.io/algoguru/2023/03/13/add-strings.html