문자열 str
에 추가 할 문자 ch
이 있습니다. 같은 문자열을 연결할 수 있다는 것을 알고 있습니다.Common Lisp에서 문자열에 문자 추가
(setf str (concatenate 'string str (list ch)))
하지만 다소 비효율적 인 것처럼 보입니다. 단일 문자를 추가하는 더 빠른 방법이 있습니까?
문자열 str
에 추가 할 문자 ch
이 있습니다. 같은 문자열을 연결할 수 있다는 것을 알고 있습니다.Common Lisp에서 문자열에 문자 추가
(setf str (concatenate 'string str (list ch)))
하지만 다소 비효율적 인 것처럼 보입니다. 단일 문자를 추가하는 더 빠른 방법이 있습니까?
문자열에 채우기 포인터가 있고 조정 가능할 수도 있습니다.
조정 가능 = 크기를 변경할 수 있습니다.
fill-pointer = 콘텐츠 크기 (길이)는 문자열 크기보다 작을 수 있습니다.
VECTOR-PUSH
= 끝에 요소를 추가하고 채우기 포인터를 증가시킵니다.
VECTOR-PUSH-EXTEND
= VECTOR-PUSH
으로, 배열이 너무 작 으면 크기가 조정됩니다.
CL-USER 32 > (defun make-adjustable-string (s)
(make-array (length s)
:fill-pointer (length s)
:adjustable t
:initial-contents s
:element-type (array-element-type s)))
MAKE-ADJUSTABLE-STRING
CL-USER 33 > (let ((s (make-adjustable-string "Lisp")))
(vector-push-extend #\! s)
s)
"Lisp!"
당신이 하나의 문자열을 여러 번 확장 할 경우, 자주와 출력를 문자열로 서면을 사용하는 것이 매우 성능이 좋은 입니다 :
우리는 보통 하나의 가변 문자열을 만들 수 있습니다 스트림에 가 제공됩니다. 성능을 위해 쓰기 대신 형식 또는 등을 사용해야합니다.
또는 모호한 대안으로 FORMAT 문자열을 컴파일 할 수 있는지 확인하십시오. –