[C++] एक वेक्टर को एक स्ट्रेट के वेक्टर फील्ड में निर्दिष्ट करना


Answers

Question

मुझे यकीन नहीं है कि यह क्यों काम करता है:

main.cpp:

int main(int argc, char * argv[]) {
    Pwm_Info tf_info;
    tf_info = get_pwm_info(library_data, motif_name);
}

Gen.cpp

        struct Pwm_Info {
    std::string motif_name;
    int width;
    std::vector < double > pwm;
    Pwm_Info(): motif_name(0),
    width(0),
    pwm(0) {}
}
TF_info;

Pwm_Info get_pwm_info(std::string library_data, std::string motif_name) {
    std::vector < double > double_list;
    strtk::parse(pwm_block, " \n\r", double_list);
    std::cout << double_list.size() << std::endl;

    Pwm_Info TF_info;

    TF_info.motif_name = motif_name;
    TF_info.width = n_width;

    std::vector < double > * pointer;
    std::vector < double > * pointer2;

    pointer = & TF_info.pwm;
    pointer2 = & double_list; * pointer = * pointer2;
    std::cout << TF_info.pwm[1] << std::endl;
    TF_info.pwm = double_list;
    return TF_info;
}

पहले, मैंने संकेतक को TF_info और डबल सूची में निकाल दिया था, और बस एक पंक्ति थी:

  TF_info.pwm = double_list;

... जो एक सेगफॉल्ट में हुई पॉइंटर्स (पॉइंटर और पॉइंटर 2) को एक-दूसरे को बनाने और निर्दिष्ट करने का क्या मतलब है?