Programing

문자열로 구성된 벡터 배열 초기화

lottogame 2020. 11. 20. 08:23
반응형

문자열로 구성된 벡터 배열 초기화


문자열의 벡터 배열을 초기화하는 것이 가능할까요?

예를 들면 :

static std::vector<std::string> v; // 클래스 멤버로 선언

나는 static초기화하고 문자열로 채우기 위해 사용했습니다. 또는 일반 배열처럼 초기화 할 수없는 경우 생성자에 채워야합니다.


일종의:

class some_class {
    static std::vector<std::string> v; // declaration
};

const char *vinit[] = {"one", "two", "three"};

std::vector<std::string> some_class::v(vinit, end(vinit)); // definition

endvinit+3나중에 길이가 변경되면 작성 하고 최신 상태로 유지할 필요가 없습니다 . 다음과 같이 정의하십시오.

template<typename T, size_t N>
T * end(T (&ra)[N]) {
    return ra + N;
}

cpp11 ( -std=c++0x필요한 경우 플래그로 활성화)을 사용하는 경우 다음과 같이 벡터를 간단히 초기화 할 수 있습니다.

// static std::vector<std::string> v;
v = {"haha", "hehe"};

2017 년이지만이 스레드는 내 검색 엔진에서 최상위이며, 오늘은 다음 방법이 선호됩니다 (초기화 목록).

std::vector<std::string> v = { "xyzzy", "plugh", "abracadabra" };
std::vector<std::string> v({ "xyzzy", "plugh", "abracadabra" });
std::vector<std::string> v{ "xyzzy", "plugh", "abracadabra" }; 

에서 https://en.wikipedia.org/wiki/C%2B%2B11#Initializer_lists


 const char* args[] = {"01", "02", "03", "04"};
 std::vector<std::string> v(args, args + 4);

그리고 C ++ 0x에서는 다음을 활용할 수 있습니다 std::initializer_list<>.

http://en.wikipedia.org/wiki/C%2B%2B0x#Initializer_lists


MSVC 2010 솔루션, std::initializer_list<>벡터는 지원하지 않지만std::end

const char *args[] = {"hello", "world!"};
std::vector<std::string> v(args, std::end(args));

@ Moo-Juice와 동일 :

const char* args[] = {"01", "02", "03", "04"};
std::vector<std::string> v(args, args + sizeof(args)/sizeof(args[0])); //get array size

를보세요 boost::assign.


C ++ 0x에서는 배열처럼 컨테이너를 초기화 할 수 있습니다.

http://www2.research.att.com/~bs/C++0xFAQ.html#init-list

참고 URL : https://stackoverflow.com/questions/4268886/initialize-a-vector-array-of-strings

반응형