모두의 코드
C++ 레퍼런스 - ios_base::iword

작성일 : 2011-10-22 이 글은 2643 번 읽혔습니다.

아직 C++ 에 친숙하지 않다면 씹어먹는 C++ 은 어때요?

ios_base::iword

long& iword(int idx);

내부 확장 가능한 배열의 정수 원소의 레퍼런스를 얻는다.

내부 확장 가능 배열(internal extensible array) 에서 long 형의 idx 번째의 원소의 레퍼런스를 얻는다. 만일 idx 가 새로운 원소의 번호이고, 내부 확장 가능 배열의 크기 보다 더 큰 값을 가진다면 (즉, 아직 할당 되지 않았다면), 이 함수는 이에 해당하는 만큼 메모리를 확장하고, 새롭게 생성된 원소들의 값을 0 으로 초기화 한다.

idx 의 값은 이전에 xalloc에 의해 리턴된 값이여야만 한다.

한 번 iword 가 리턴한 레퍼런스는 스트림에 다른 연산( iword 를 호출하는 것을 포함해서) 이 수행되기 전 까지 사용될 수 있다. 만일 스트림이 다른 작업을 수행한다면, 리턴된 레퍼런스를 사용하지 못할 수 있다.

내부 확장 가능 배열은 스트림에서 여러 용도(general purpose)로 사용되는 word 크기의 원소들을 가진 배열로 데이터를 임시적으로 저장하는데 사용된다.

인자

idx

내부 확장 가능 배열의 특정 원소의 인덱스값. 이 값은 이전의 xalloc 함수 호출을 통해 얻어진 값이여야 한다.

리턴값

인덱스가 idx 인 내부 확장 가능 배열의 원소의 레퍼런스를 리턴한다. 이 때, 그 레퍼런스는 long 형의 원소의 레퍼런스 이다. 실패시, 값이 0 인, long 형 원소의 레퍼런스가 리턴된다.

실행 예제

/*

이 예제는
http://msdn.microsoft.com/en-us/library/77z9kz41.aspx
에서 가져왔습니다.

i, j 가 각각 xalloc 을 통해 얻어낸 index 들이고, cout 과 cin 의 내부 확장 가능
배열의 i , j 번째 원소에 각각 11 과 13 을 넣는다.
*/
#include <iostream>
using namespace std;
int main() {
  static const int i = ios_base::xalloc();
  static const int j = ios_base::xalloc();

  cout.iword(i) = 11;
  cin.iword(j) = 13;

  cout << cout.iword(i) << endl;
  cout << cin.iword(j) << endl;
}

실행 결과

참고 자료

  • ios_base::xalloc : 내부 확장 가능 배열의 새로운 인덱스를 리턴한다.

  • ios_base::pword : 내부 확장 가능 배열의 포인터의 레퍼런스를 얻는다.

첫 댓글을 달아주세요!
프로필 사진 없음
강좌에 관련 없이 궁금한 내용은 여기를 사용해주세요

    댓글을 불러오는 중입니다..