This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
programming:cpp:container [2022/05/06 17:13] odagawa |
programming:cpp:container [2022/05/06 17:25] (current) odagawa |
||
|---|---|---|---|
| Line 16: | Line 16: | ||
| <code cpp> | <code cpp> | ||
| + | #include < | ||
| #include < | #include < | ||
| Line 213: | Line 214: | ||
| それぞれの関数のオーバーロードの仕方は[[programming: | それぞれの関数のオーバーロードの仕方は[[programming: | ||
| + | <code cpp> | ||
| + | #include < | ||
| + | #include < | ||
| + | #include < | ||
| + | |||
| + | #include < | ||
| + | |||
| + | int main (int argc, char *argv[]) { | ||
| + | |||
| + | // linklet の実装. | ||
| + | // ただし実は MC の解析であれば unordered である必要はなかった. | ||
| + | boost:: | ||
| + | | ||
| + | std:: | ||
| + | for ( auto ilinklet : linklets ) { | ||
| + | if ( ilinklet.first > ilinklet.second ) | ||
| + | std:: | ||
| + | linklet.insert(std:: | ||
| + | } | ||
| + | // これで上流の basetrack を基準につながる下流の basetrack を高速で探索することが可能となった. | ||
| + | // ただし,実際には int ではなく,plate などで大小関係が決まった構造体を詰めている | ||
| + | | ||
| + | // ある basetrack からつながるすべての basetrack を列挙する. | ||
| + | int target = 100; | ||
| + | if ( linklet.find(target) != linklet.end() ) { | ||
| + | auto range = linklet.equal_range(target); | ||
| + | for ( auto itr = range.first; | ||
| + | std::cout << (*itr).second << std::endl; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | std:: | ||
| + | |||
| + | } | ||
| + | |||
| + | </ | ||