나는 일반적으로 파이썬의 구문을 좋아합니다.
v = [ "sds", "bsdf", "dsdfaf"]
현재 C ++에있는 것은 다음과 같습니다.
vector<string> v;
v.push_back("sds");
v.push_back("bsdf");
v.push_back("dsdfaf");
이 작업을 수행하는 더 나은 / 깨끗한 방법이 있습니까? v는 초기화 후에도 변경되지 않습니다. 따라서 배열도 작동 할 수 있지만 배열의 문제는 코드에서 배열의 길이도 하드 코딩해야한다는 것입니다.
char* v[] = {"sds", "bsdf", "dsdfaf"};
for (int i = 0; i < 3; ++i) do_something(v[i]);
편집 : C ++ 11이 없습니다. 내 컴파일러는 gcc 4.1.2입니다.
C ++ 03 솔루션 :
한 쌍의 반복기를 사용하는 벡터 생성자를 사용하십시오.
char* arr[] = {"sds", "bsdf", "dsdfaf"};
vector<string> v(arr, arr + sizeof(arr)/sizeof(arr[0]));
초기화 후 길이를 변경할 필요가없는 경우 배열을 사용하십시오. 배열 길이를 하드 코딩하지 않으려면이 함수 템플릿을 사용하여 크기를 추론하십시오.
template<typename T, std::size_t N>
std::size_t length_of( T const (&)[N] ) { return N; }
char* v[] = {"sds", "bsdf", "dsdfaf"};
for (int i = 0; i < length_of(v); ++i) do_something(v[i]);
.NET Framework를 전달하는 함수 내에서는 작동하지 않습니다 char **
.
using boost::assign::list_of;
std::vector<std::string> v = list_of("sds")("bsdf")("dsdfaf");
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다