본문 바로가기

끄적끄적 ( 비공개 )

day3정리

바깥 루ㅜ프 4번 더 돌게됨
안쪽에서 반복문으로 처리 x > 한개씩 처리(자신도 빼주어야한다.)
Math.max 를 써야했는가 . 함수호출에 따른 오버헤드가 발생한다.

높이차를 돌고 또다시 loop를 돌이유가 있나

max대신 if문장을써라

vector.reserve(N); 잘했다. 왜?
if 문에서 좌우 중에 낮은게 하나만 발생해도 break 해줘야한다.and 조건의 특징은 첫뻔재 조건이 False가 나오면
뒤에꺼는 검사안한다.

vector : 가변사이즈 배열 but 그래서 오버헤드가 발생하기도한다. 그부분을 상쇄하기 위해서 Reserve (ㅜ)dmf 
으 ㄹ사용해서 공간을 확보해놓느낟.
사실 vector <int> buildings(N)했으면 reserve안햇음 된다.
그리고 사실 크기 알고있으니 배열쓰면된다.
그리고 TC내에서 초기화시키면 매 TC마다 초기화안해줘도 되서 좋다.

sprintf 출력량 많을떄, 포맷을 가진 출력을 할댸

[해쉬]
삭제 할때 주의 : 해당키를 삭제한다고 해서 삭제만 하면 안된다.  ( 체인으로 연결되어있다면 )

컴퓨터에서의 문자 표현 

[문자열 길이]
const char *str) 로 인수받고
int len=0 ;
for(; str[len]; len++);
return len

[문자열 복사]  // '\0' = null = 0 ?     즉 다시 말해서 c와 c++에서 NULL == 숫자 0 == '\0'는 동일한 의미로 쓰인다.

char str2[100] = {0,}; 
(char *dest, const char *src) 인자로 받아서  
while(*src){
  *dest = *src;  //인덱스를 쓴다면 굳이 이거 안해도 될거다.
  src++;
  desc++;
}
*desc  = '\0'
return org;

[비교]

str1 > str2 = 1
     ==      = 0 
     <        = -1
포인터로 해도 되는데 인덱스가 더 편하다
int i =0 ;
 while(str1[i] != '\0' && str1[i]==str2[i]){
  i++;
}
  return str1[i]-str2[i];   

[concat] 
목적지의 델리미터('\0')d을 찾아야한다.
while(*dest) dest++;
여기서 빠져나온순간 포인터는 dest 의 딜리미터에 가있다.
while(*src){
 *dest =*src;
 dest++;
 src++;
}
마지막에 딜리미터 추가.

[리버스]
사진참고

[strToInt] 
value = value *10 + (ch - '0');
[intTostr]
뒤집기 한다. 
tip) 2로나누는것보다bit연산이 좋다.


라이브러리 사용 > 개인 코드 사용 > 인라인화


문자열 \0 까지 반복
문자열뒤집기 중간기준으로 좌우 변경
 reverse 만들어라. stringBuffer 클래스의 reverse사용
문자열비교 strcmp() 함수 ( 얘는 인덱스로 , 포인터로 구현할수있다.)
믄지얄 숫자로 atoi  itoa 있다. stdlib.h 사용


문자열 찾기

=======================
find : string 자료구조에서 파인드는 이터레이터를 반환한다.
sentence.erase(0, sentence.find(target)+1);
sentence.find(target)+1를 변수로 담으면 두번이나 find 안해도된다.
======================
이차원 배열도 일차원배열로  찾을 수 있다.