1 //===----------------------------------------------------------------------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is dual licensed under the MIT and the University of Illinois Open 6 // Source Licenses. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 // <list> 11 12 // void splice(const_iterator position, list& x); 13 14 #include <list> 15 #include <cassert> 16 17 int main() 18 { 19 int a1[] = {1, 2, 3}; 20 int a2[] = {4, 5, 6}; 21 { 22 std::list<int> l1; 23 std::list<int> l2; 24 l1.splice(l1.end(), l2); 25 assert(l1.size() == 0); 26 assert(distance(l1.begin(), l1.end()) == 0); 27 assert(l2.size() == 0); 28 assert(distance(l2.begin(), l2.end()) == 0); 29 } 30 { 31 std::list<int> l1; 32 std::list<int> l2(a2, a2+1); 33 l1.splice(l1.end(), l2); 34 assert(l1.size() == 1); 35 assert(distance(l1.begin(), l1.end()) == 1); 36 assert(l2.size() == 0); 37 assert(distance(l2.begin(), l2.end()) == 0); 38 std::list<int>::const_iterator i = l1.begin(); 39 assert(*i == 4); 40 } 41 { 42 std::list<int> l1; 43 std::list<int> l2(a2, a2+2); 44 l1.splice(l1.end(), l2); 45 assert(l1.size() == 2); 46 assert(distance(l1.begin(), l1.end()) == 2); 47 assert(l2.size() == 0); 48 assert(distance(l2.begin(), l2.end()) == 0); 49 std::list<int>::const_iterator i = l1.begin(); 50 assert(*i == 4); 51 ++i; 52 assert(*i == 5); 53 } 54 { 55 std::list<int> l1; 56 std::list<int> l2(a2, a2+3); 57 l1.splice(l1.end(), l2); 58 assert(l1.size() == 3); 59 assert(distance(l1.begin(), l1.end()) == 3); 60 assert(l2.size() == 0); 61 assert(distance(l2.begin(), l2.end()) == 0); 62 std::list<int>::const_iterator i = l1.begin(); 63 assert(*i == 4); 64 ++i; 65 assert(*i == 5); 66 ++i; 67 assert(*i == 6); 68 } 69 { 70 std::list<int> l1(a1, a1+1); 71 std::list<int> l2; 72 l1.splice(l1.begin(), l2); 73 assert(l1.size() == 1); 74 assert(distance(l1.begin(), l1.end()) == 1); 75 assert(l2.size() == 0); 76 assert(distance(l2.begin(), l2.end()) == 0); 77 std::list<int>::const_iterator i = l1.begin(); 78 assert(*i == 1); 79 } 80 { 81 std::list<int> l1(a1, a1+1); 82 std::list<int> l2; 83 l1.splice(l1.end(), l2); 84 assert(l1.size() == 1); 85 assert(distance(l1.begin(), l1.end()) == 1); 86 assert(l2.size() == 0); 87 assert(distance(l2.begin(), l2.end()) == 0); 88 std::list<int>::const_iterator i = l1.begin(); 89 assert(*i == 1); 90 } 91 { 92 std::list<int> l1(a1, a1+1); 93 std::list<int> l2(a2, a2+1); 94 l1.splice(l1.begin(), l2); 95 assert(l1.size() == 2); 96 assert(distance(l1.begin(), l1.end()) == 2); 97 assert(l2.size() == 0); 98 assert(distance(l2.begin(), l2.end()) == 0); 99 std::list<int>::const_iterator i = l1.begin(); 100 assert(*i == 4); 101 ++i; 102 assert(*i == 1); 103 } 104 { 105 std::list<int> l1(a1, a1+1); 106 std::list<int> l2(a2, a2+1); 107 l1.splice(l1.end(), l2); 108 assert(l1.size() == 2); 109 assert(distance(l1.begin(), l1.end()) == 2); 110 assert(l2.size() == 0); 111 assert(distance(l2.begin(), l2.end()) == 0); 112 std::list<int>::const_iterator i = l1.begin(); 113 assert(*i == 1); 114 ++i; 115 assert(*i == 4); 116 } 117 { 118 std::list<int> l1(a1, a1+1); 119 std::list<int> l2(a2, a2+2); 120 l1.splice(l1.begin(), l2); 121 assert(l1.size() == 3); 122 assert(distance(l1.begin(), l1.end()) == 3); 123 assert(l2.size() == 0); 124 assert(distance(l2.begin(), l2.end()) == 0); 125 std::list<int>::const_iterator i = l1.begin(); 126 assert(*i == 4); 127 ++i; 128 assert(*i == 5); 129 ++i; 130 assert(*i == 1); 131 } 132 { 133 std::list<int> l1(a1, a1+1); 134 std::list<int> l2(a2, a2+2); 135 l1.splice(l1.end(), l2); 136 assert(l1.size() == 3); 137 assert(distance(l1.begin(), l1.end()) == 3); 138 assert(l2.size() == 0); 139 assert(distance(l2.begin(), l2.end()) == 0); 140 std::list<int>::const_iterator i = l1.begin(); 141 assert(*i == 1); 142 ++i; 143 assert(*i == 4); 144 ++i; 145 assert(*i == 5); 146 } 147 { 148 std::list<int> l1(a1, a1+1); 149 std::list<int> l2(a2, a2+3); 150 l1.splice(l1.begin(), l2); 151 assert(l1.size() == 4); 152 assert(distance(l1.begin(), l1.end()) == 4); 153 assert(l2.size() == 0); 154 assert(distance(l2.begin(), l2.end()) == 0); 155 std::list<int>::const_iterator i = l1.begin(); 156 assert(*i == 4); 157 ++i; 158 assert(*i == 5); 159 ++i; 160 assert(*i == 6); 161 ++i; 162 assert(*i == 1); 163 } 164 { 165 std::list<int> l1(a1, a1+1); 166 std::list<int> l2(a2, a2+3); 167 l1.splice(l1.end(), l2); 168 assert(l1.size() == 4); 169 assert(distance(l1.begin(), l1.end()) == 4); 170 assert(l2.size() == 0); 171 assert(distance(l2.begin(), l2.end()) == 0); 172 std::list<int>::const_iterator i = l1.begin(); 173 assert(*i == 1); 174 ++i; 175 assert(*i == 4); 176 ++i; 177 assert(*i == 5); 178 ++i; 179 assert(*i == 6); 180 } 181 { 182 std::list<int> l1(a1, a1+2); 183 std::list<int> l2; 184 l1.splice(l1.begin(), l2); 185 assert(l1.size() == 2); 186 assert(distance(l1.begin(), l1.end()) == 2); 187 assert(l2.size() == 0); 188 assert(distance(l2.begin(), l2.end()) == 0); 189 std::list<int>::const_iterator i = l1.begin(); 190 assert(*i == 1); 191 ++i; 192 assert(*i == 2); 193 } 194 { 195 std::list<int> l1(a1, a1+2); 196 std::list<int> l2; 197 l1.splice(next(l1.begin()), l2); 198 assert(l1.size() == 2); 199 assert(distance(l1.begin(), l1.end()) == 2); 200 assert(l2.size() == 0); 201 assert(distance(l2.begin(), l2.end()) == 0); 202 std::list<int>::const_iterator i = l1.begin(); 203 assert(*i == 1); 204 ++i; 205 assert(*i == 2); 206 } 207 { 208 std::list<int> l1(a1, a1+2); 209 std::list<int> l2; 210 l1.splice(next(l1.begin(), 2), l2); 211 assert(l1.size() == 2); 212 assert(distance(l1.begin(), l1.end()) == 2); 213 assert(l2.size() == 0); 214 assert(distance(l2.begin(), l2.end()) == 0); 215 std::list<int>::const_iterator i = l1.begin(); 216 assert(*i == 1); 217 ++i; 218 assert(*i == 2); 219 } 220 { 221 std::list<int> l1(a1, a1+2); 222 std::list<int> l2(a2, a2+1); 223 l1.splice(l1.begin(), l2); 224 assert(l1.size() == 3); 225 assert(distance(l1.begin(), l1.end()) == 3); 226 assert(l2.size() == 0); 227 assert(distance(l2.begin(), l2.end()) == 0); 228 std::list<int>::const_iterator i = l1.begin(); 229 assert(*i == 4); 230 ++i; 231 assert(*i == 1); 232 ++i; 233 assert(*i == 2); 234 } 235 { 236 std::list<int> l1(a1, a1+2); 237 std::list<int> l2(a2, a2+1); 238 l1.splice(next(l1.begin()), l2); 239 assert(l1.size() == 3); 240 assert(distance(l1.begin(), l1.end()) == 3); 241 assert(l2.size() == 0); 242 assert(distance(l2.begin(), l2.end()) == 0); 243 std::list<int>::const_iterator i = l1.begin(); 244 assert(*i == 1); 245 ++i; 246 assert(*i == 4); 247 ++i; 248 assert(*i == 2); 249 } 250 { 251 std::list<int> l1(a1, a1+2); 252 std::list<int> l2(a2, a2+1); 253 l1.splice(next(l1.begin(), 2), l2); 254 assert(l1.size() == 3); 255 assert(distance(l1.begin(), l1.end()) == 3); 256 assert(l2.size() == 0); 257 assert(distance(l2.begin(), l2.end()) == 0); 258 std::list<int>::const_iterator i = l1.begin(); 259 assert(*i == 1); 260 ++i; 261 assert(*i == 2); 262 ++i; 263 assert(*i == 4); 264 } 265 { 266 std::list<int> l1(a1, a1+2); 267 std::list<int> l2(a2, a2+2); 268 l1.splice(l1.begin(), l2); 269 assert(l1.size() == 4); 270 assert(distance(l1.begin(), l1.end()) == 4); 271 assert(l2.size() == 0); 272 assert(distance(l2.begin(), l2.end()) == 0); 273 std::list<int>::const_iterator i = l1.begin(); 274 assert(*i == 4); 275 ++i; 276 assert(*i == 5); 277 ++i; 278 assert(*i == 1); 279 ++i; 280 assert(*i == 2); 281 } 282 { 283 std::list<int> l1(a1, a1+2); 284 std::list<int> l2(a2, a2+2); 285 l1.splice(next(l1.begin()), l2); 286 assert(l1.size() == 4); 287 assert(distance(l1.begin(), l1.end()) == 4); 288 assert(l2.size() == 0); 289 assert(distance(l2.begin(), l2.end()) == 0); 290 std::list<int>::const_iterator i = l1.begin(); 291 assert(*i == 1); 292 ++i; 293 assert(*i == 4); 294 ++i; 295 assert(*i == 5); 296 ++i; 297 assert(*i == 2); 298 } 299 { 300 std::list<int> l1(a1, a1+2); 301 std::list<int> l2(a2, a2+2); 302 l1.splice(next(l1.begin(), 2), l2); 303 assert(l1.size() == 4); 304 assert(distance(l1.begin(), l1.end()) == 4); 305 assert(l2.size() == 0); 306 assert(distance(l2.begin(), l2.end()) == 0); 307 std::list<int>::const_iterator i = l1.begin(); 308 assert(*i == 1); 309 ++i; 310 assert(*i == 2); 311 ++i; 312 assert(*i == 4); 313 ++i; 314 assert(*i == 5); 315 } 316 { 317 std::list<int> l1(a1, a1+3); 318 std::list<int> l2(a2, a2+3); 319 l1.splice(l1.begin(), l2); 320 assert(l1.size() == 6); 321 assert(distance(l1.begin(), l1.end()) == 6); 322 assert(l2.size() == 0); 323 assert(distance(l2.begin(), l2.end()) == 0); 324 std::list<int>::const_iterator i = l1.begin(); 325 assert(*i == 4); 326 ++i; 327 assert(*i == 5); 328 ++i; 329 assert(*i == 6); 330 ++i; 331 assert(*i == 1); 332 ++i; 333 assert(*i == 2); 334 ++i; 335 assert(*i == 3); 336 } 337 { 338 std::list<int> l1(a1, a1+3); 339 std::list<int> l2(a2, a2+3); 340 l1.splice(next(l1.begin()), l2); 341 assert(l1.size() == 6); 342 assert(distance(l1.begin(), l1.end()) == 6); 343 assert(l2.size() == 0); 344 assert(distance(l2.begin(), l2.end()) == 0); 345 std::list<int>::const_iterator i = l1.begin(); 346 assert(*i == 1); 347 ++i; 348 assert(*i == 4); 349 ++i; 350 assert(*i == 5); 351 ++i; 352 assert(*i == 6); 353 ++i; 354 assert(*i == 2); 355 ++i; 356 assert(*i == 3); 357 } 358 { 359 std::list<int> l1(a1, a1+3); 360 std::list<int> l2(a2, a2+3); 361 l1.splice(next(l1.begin(), 2), l2); 362 assert(l1.size() == 6); 363 assert(distance(l1.begin(), l1.end()) == 6); 364 assert(l2.size() == 0); 365 assert(distance(l2.begin(), l2.end()) == 0); 366 std::list<int>::const_iterator i = l1.begin(); 367 assert(*i == 1); 368 ++i; 369 assert(*i == 2); 370 ++i; 371 assert(*i == 4); 372 ++i; 373 assert(*i == 5); 374 ++i; 375 assert(*i == 6); 376 ++i; 377 assert(*i == 3); 378 } 379 { 380 std::list<int> l1(a1, a1+3); 381 std::list<int> l2(a2, a2+3); 382 l1.splice(next(l1.begin(), 3), l2); 383 assert(l1.size() == 6); 384 assert(distance(l1.begin(), l1.end()) == 6); 385 assert(l2.size() == 0); 386 assert(distance(l2.begin(), l2.end()) == 0); 387 std::list<int>::const_iterator i = l1.begin(); 388 assert(*i == 1); 389 ++i; 390 assert(*i == 2); 391 ++i; 392 assert(*i == 3); 393 ++i; 394 assert(*i == 4); 395 ++i; 396 assert(*i == 5); 397 ++i; 398 assert(*i == 6); 399 } 400 } 401