Loading...
Searching...
No Matches
Operators_vector.tpp
1/*---------------------------------------------------------------------------*\
2 *
3 * bitpit
4 *
5 * Copyright (C) 2015-2021 OPTIMAD engineering Srl
6 *
7 * -------------------------------------------------------------------------
8 * License
9 * This file is part of bitpit.
10 *
11 * bitpit is free software: you can redistribute it and/or modify it
12 * under the terms of the GNU Lesser General Public License v3 (LGPL)
13 * as published by the Free Software Foundation.
14 *
15 * bitpit is distributed in the hope that it will be useful, but WITHOUT
16 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
17 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
18 * License for more details.
19 *
20 * You should have received a copy of the GNU Lesser General Public License
21 * along with bitpit. If not, see <http://www.gnu.org/licenses/>.
22 *
23\*---------------------------------------------------------------------------*/
24
25// ================================================================================== //
26// OPERATORS //
27// //
28// Operators for standard template library vectors. //
29// ================================================================================== //
30// INFO //
31// ================================================================================== //
32// Author : Alessandro Alaia //
33// Version : v3.0 //
34// //
35// All rights reserved. //
36// ================================================================================== //
37
38// ================================================================================== //
39// TEMPLATE IMPLEMENTATION //
40// ================================================================================== //
41
47// Operator "+" ===================================================================== //
48
49// ---------------------------------------------------------------------------------- //
68template <class T>
69std::vector< T > operator+ (
70 const std::vector< T > &x,
71 const std::vector< T > &y
72) {
73
74// ================================================================================== //
75// VARIABLES DECLARATION //
76// ================================================================================== //
77size_t n = std::min(x.size(), y.size());
78std::vector< T > z(n, T(0));
79
80// ================================================================================== //
81// PERFORM SUM //
82// ================================================================================== //
83for (size_t i = 0; i < n; i++){
84 z[i] = x[i] + y[i];
85};
86
87return (z); };
88
89// ---------------------------------------------------------------------------------- //
108template <class T>
109std::vector< T > operator+ (
110 const std::vector< T > &x,
111 const T &y
112) {
113
114// ================================================================================== //
115// VARIABLES DECLARATION //
116// ================================================================================== //
117size_t n = x.size();
118std::vector< T > z(n, T(0));
119
120// ================================================================================== //
121// PERFORM SUM //
122// ================================================================================== //
123for (size_t i = 0; i < n; i++){
124 z[i] = x[i] + y;
125};
126
127return (z); };
128
129// ---------------------------------------------------------------------------------- //
148template <class T>
149std::vector< T > operator+ (
150 const T &x,
151 const std::vector< T > &y
152) {
153
154// ================================================================================== //
155// VARIABLES DECLARATION //
156// ================================================================================== //
157std::vector< T > z;
158
159// ================================================================================== //
160// PERFORM SUM //
161// ================================================================================== //
162z = y + x;
163
164return (z); };
165
166// ---------------------------------------------------------------------------------- //
186template <class T>
187std::vector< std::vector< T > > operator+ (
188 const std::vector< std::vector< T > > &x,
189 const T &y
190) {
191
192// ================================================================================== //
193// VARIABLES DECLARATION //
194// ================================================================================== //
195size_t n = x.size();
196std::vector< std::vector< T > > z(n);
197
198// ================================================================================== //
199// PERFORM SUM //
200// ================================================================================== //
201for (size_t i = 0; i < n; i++) {
202 z[i] = x[i] + y;
203} //next i
204
205return (z); };
206
207// ---------------------------------------------------------------------------------- //
227template <class T>
228std::vector< std::vector< T > > operator+ (
229 const T &x,
230 const std::vector< std::vector< T > > &y
231) {
232
233// ================================================================================== //
234// VARIABLES DECLARATION //
235// ================================================================================== //
236std::vector< std::vector< T > > z;
237
238// ================================================================================== //
239// PERFORM SUM //
240// ================================================================================== //
241z = y + x;
242
243return (z); };
244
245// Operator "+=" ==================================================================== //
246
247// ---------------------------------------------------------------------------------- //
266template <class T>
267std::vector< T >& operator+= (
268 std::vector< T > &x,
269 const std::vector< T > &y
270) {
271
272 // ================================================================================== //
273// VARIABLES DECLARATION //
274// ================================================================================== //
275size_t n = std::min(x.size(), y.size());
276
277// ================================================================================== //
278// PERFORM SUM //
279// ================================================================================== //
280for (size_t i = 0; i < n; i++){
281 x[i] += y[i];
282};
283
284return (x); };
285
286// ---------------------------------------------------------------------------------- //
305template <class T>
306std::vector< T >& operator+= (
307 std::vector< T > &x,
308 const T &y
309) {
310
311// ================================================================================== //
312// VARIABLES DECLARATION //
313// ================================================================================== //
314size_t n = x.size();
315
316// ================================================================================== //
317// PERFORM SUM //
318// ================================================================================== //
319for (size_t i = 0; i < n; i++){
320 x[i] += y;
321};
322
323return (x); };
324
325// ---------------------------------------------------------------------------------- //
344template <class T>
345std::vector< std::vector< T > >& operator+= (
346 std::vector< std::vector< T > > &x,
347 const T &y
348) {
349
350// ================================================================================== //
351// VARIABLES DECLARATION //
352// ================================================================================== //
353size_t n = x.size();
354
355// ================================================================================== //
356// PERFORM SUM //
357// ================================================================================== //
358for (size_t i = 0; i < n; i++) {
359 x[i] += y;
360} //next i
361
362return (x); };
363
364// Operator "-" ===================================================================== //
365
366// ---------------------------------------------------------------------------------- //
385template <class T>
386std::vector< T > operator- (
387 const std::vector< T > &x,
388 const std::vector< T > &y
389) {
390
391// ================================================================================== //
392// VARIABLES DECLARATION //
393// ================================================================================== //
394size_t n = std::min(x.size(), y.size());
395std::vector< T > z(n, T(0));
396
397// ================================================================================== //
398// PERFORM DIFFERENCE //
399// ================================================================================== //
400for (size_t i = 0; i < n; i++){
401 z[i] = x[i] - y[i];
402};
403
404return(z); };
405
406// ---------------------------------------------------------------------------------- //
425template <class T>
426std::vector< T > operator- (
427 const std::vector< T > &x,
428 const T &y
429) {
430
431// ================================================================================== //
432// VARIABLES DECLARATION //
433// ================================================================================== //
434size_t n = x.size();
435std::vector< T > z(n, T(0));
436
437// ================================================================================== //
438// PERFORM DIFFERENCE //
439// ================================================================================== //
440for (size_t i = 0; i < n; i++){
441 z[i] = x[i] - y;
442};
443
444return(z); };
445
446// ---------------------------------------------------------------------------------- //
465template <class T>
466std::vector< T > operator- (
467 const T &x,
468 const std::vector< T > &y
469) {
470
471// ================================================================================== //
472// VARIABLES DECLARATION //
473// ================================================================================== //
474std::vector< T > z;
475
476// =================================================================================== //
477// PERFORM DIFFERENCE //
478// =================================================================================== //
479z = y - x;
480
481return(z); };
482
483// ---------------------------------------------------------------------------------- //
503template <class T>
504std::vector< std::vector< T > > operator- (
505 const T &x,
506 const std::vector< std::vector< T > > &y
507) {
508
509// ================================================================================== //
510// VARIABLES DECLARATION //
511// ================================================================================== //
512size_t n = y.size();
513std::vector< std::vector< T > > z(n);
514
515// ================================================================================== //
516// PERFORM DIFFERENCE //
517// ================================================================================== //
518for (size_t i = 0; i < n; i++) {
519 z[i] = x - y[i];
520} //next i
521
522return(z); };
523
524// ---------------------------------------------------------------------------------- //
544template <class T>
545std::vector< std::vector< T > > operator- (
546 const std::vector< std::vector< T > > &x,
547 const T &y
548) {
549
550// ================================================================================== //
551// VARIABLES DECLARATION //
552// ================================================================================== //
553std::vector< std::vector< T > > z;
554
555// ================================================================================== //
556// PERFORM DIFFERENCE //
557// ================================================================================== //
558z = y - x;
559
560return(z); };
561
562// Operator "-=" ==================================================================== //
563
564// ---------------------------------------------------------------------------------- //
583template <class T>
584std::vector< T >& operator-= (
585 std::vector< T > &x,
586 const std::vector< T > &y
587) {
588
589// ================================================================================== //
590// VARIABLES DECLARATION //
591// ================================================================================== //
592size_t n = std::min(x.size(), y.size());
593
594// ================================================================================== //
595// PERFORM SUM //
596// ================================================================================== //
597for (size_t i = 0; i < n; i++){
598 x[i] -= y[i];
599};
600
601return (x); };
602
603// ---------------------------------------------------------------------------------- //
622template <class T>
623std::vector< T >& operator-= (
624 std::vector< T > &x,
625 const T &y
626) {
627
628// ================================================================================== //
629// VARIABLES DECLARATION //
630// ================================================================================== //
631size_t n = x.size();
632
633// ================================================================================== //
634// PERFORM SUM //
635// ================================================================================== //
636for (size_t i = 0; i < n; i++){
637 x[i] -= y;
638};
639
640return (x); };
641
642// ---------------------------------------------------------------------------------- //
661template <class T>
662std::vector< std::vector< T > >& operator-= (
663 std::vector< std::vector< T > > &x,
664 const T &y
665) {
666
667// ================================================================================== //
668// VARIABLES DECLARATION //
669// ================================================================================== //
670size_t n = x.size();
671
672// ================================================================================== //
673// PERFORM SUM //
674// ================================================================================== //
675for (size_t i = 0; i < n; i++) {
676 x[i] -= y;
677} //next i
678
679return (x); };
680
681// Operator "*" ===================================================================== //
682
683// ---------------------------------------------------------------------------------- //
702template <class T>
703std::vector< T > operator* (
704 const std::vector< T > &x,
705 const std::vector< T > &y
706) {
707
708// ================================================================================== //
709// VARIABLES DECLARATION //
710// ================================================================================== //
711size_t n = std::min(x.size(), y.size());
712std::vector<T> z(n, T(0));
713
714// ================================================================================== //
715// PERFORM PRODUCT //
716// ================================================================================== //
717for (size_t i = 0; i < n; i++){
718 z[i] = x[i] * y[i];
719};
720
721return(z); };
722
723// ---------------------------------------------------------------------------------- //
742template <class T>
743std::vector< T > operator* (
744 const std::vector< T > &x,
745 const T &y
746) {
747
748// ================================================================================== //
749// VARIABLES DECLARATION //
750// ================================================================================== //
751size_t n = x.size();
752std::vector< T > z(n, T(0));
753
754// =================================================================================== //
755// PERFORM PRODUCT //
756// =================================================================================== //
757for (size_t i = 0; i < n; i++){
758 z[i] = x[i] * y;
759};
760
761return(z); };
762
763// ---------------------------------------------------------------------------------- //
782template <class T>
783std::vector< T > operator* (
784 const T &x,
785 const std::vector< T > &y
786) {
787
788// ================================================================================== //
789// VARIABLES DECLARATION //
790// ================================================================================== //
791std::vector< T > z;
792
793// ================================================================================== //
794// PERFORM PRODUCT //
795// ================================================================================== //
796z = y * x;
797
798return(z); };
799
800// ---------------------------------------------------------------------------------- //
820template <class T>
821std::vector< std::vector< T > > operator* (
822 const T &x,
823 const std::vector< std::vector< T > > &y
824) {
825
826// ================================================================================== //
827// VARIABLES DECLARATION //
828// ================================================================================== //
829size_t n = y.size();
830std::vector< std::vector< T > > z(n);
831
832// ================================================================================== //
833// PERFORM PRODUCT //
834// ================================================================================== //
835for (size_t i = 0; i < n; i++) {
836 z[i] = x * y[i];
837} //next i
838
839return(z); };
840
841// ---------------------------------------------------------------------------------- //
861template <class T>
862std::vector< std::vector< T > > operator* (
863 const std::vector< std::vector< T > > &x,
864 const T &y
865) {
866
867// ================================================================================== //
868// VARIABLES DECLARATION //
869// ================================================================================== //
870std::vector< std::vector< T > > z;
871
872// ================================================================================== //
873// PERFORM PRODUCT //
874// ================================================================================== //
875z = y*x;
876
877return(z); };
878
879// Operator "*=" ==================================================================== //
880
881// ---------------------------------------------------------------------------------- //
900template <class T>
901std::vector< T >& operator*= (
902 std::vector< T > &x,
903 const std::vector< T > &y
904) {
905
906 // ================================================================================== //
907// VARIABLES DECLARATION //
908// ================================================================================== //
909size_t n = std::min(x.size(), y.size());
910
911// ================================================================================== //
912// PERFORM SUM //
913// ================================================================================== //
914for (size_t i = 0; i < n; i++){
915 x[i] *= y[i];
916};
917
918return (x); };
919
920// ---------------------------------------------------------------------------------- //
939template <class T>
940std::vector< T >& operator*= (
941 std::vector< T > &x,
942 const T &y
943) {
944
945// ================================================================================== //
946// VARIABLES DECLARATION //
947// ================================================================================== //
948size_t n = x.size();
949
950// ================================================================================== //
951// PERFORM SUM //
952// ================================================================================== //
953for (size_t i = 0; i < n; i++){
954 x[i] *= y;
955};
956
957return (x); };
958
959// ---------------------------------------------------------------------------------- //
978template <class T>
979std::vector< std::vector< T > >& operator*= (
980 std::vector< std::vector< T > > &x,
981 const T &y
982) {
983
984// ================================================================================== //
985// VARIABLES DECLARATION //
986// ================================================================================== //
987size_t n = x.size();
988
989// ================================================================================== //
990// PERFORM SUM //
991// ================================================================================== //
992for (size_t i = 0; i < n; i++) {
993 x[i] *= y;
994} //next i
995
996return (x); };
997
998// Operator "/" ===================================================================== //
999
1000// ---------------------------------------------------------------------------------- //
1019template <class T>
1020std::vector< T > operator/ (
1021 const std::vector< T > &x,
1022 const std::vector< T > &y
1023) {
1024
1025// ================================================================================== //
1026// VARIABLES DECLARATION //
1027// ================================================================================== //
1028size_t n = std::min(x.size(), y.size());
1029std::vector<T> z(n, T(0));
1030
1031// ================================================================================== //
1032// PERFORM DIVISION //
1033// ================================================================================== //
1034for (size_t i = 0; i < n; i++){
1035 z[i] = x[i] / y[i];
1036};
1037
1038return(z); };
1039
1040// ---------------------------------------------------------------------------------- //
1059template <class T>
1060std::vector< T > operator/ (
1061 const std::vector< T > &x,
1062 const T &y
1063) {
1064
1065// ================================================================================== //
1066// VARIABLES DECLARATION //
1067// ================================================================================== //
1068
1069// Local variables
1070size_t n = x.size();
1071std::vector< T > z(n, T(0));
1072
1073// Counters
1074size_t i;
1075
1076// ================================================================================== //
1077// DIVIDE X BY Y //
1078// ================================================================================== //
1079for (i = 0; i < n; i++) {
1080 z[i] = x[i]/y;
1081}
1082
1083return(z); };
1084
1085// ---------------------------------------------------------------------------------- //
1104template <class T>
1105std::vector< T > operator/ (
1106 const T &x,
1107 const std::vector< T > &y
1108) {
1109
1110// ================================================================================== //
1111// VARIABLES DECLARATION //
1112// ================================================================================== //
1113size_t n = y.size();
1114std::vector< T > z(n);
1115
1116// ================================================================================== //
1117// DIVIDE X BY Y //
1118// ================================================================================== //
1119for (size_t i = 0; i < n; i++) {
1120 z[i] = x/y[i];
1121}
1122
1123return(z); };
1124
1125// ---------------------------------------------------------------------------------- //
1145template <class T>
1146std::vector< std::vector< T > > operator/ (
1147 const T &x,
1148 const std::vector< std::vector< T > > &y
1149) {
1150
1151// ================================================================================== //
1152// VARIABLES DECLARATION //
1153// ================================================================================== //
1154size_t n = y.size();
1155std::vector< std::vector< T > > z(n);
1156
1157// ================================================================================== //
1158// DIVIDE X BY Y //
1159// ================================================================================== //
1160for (size_t i = 0; i < n; i++) {
1161 z[i] = x/y[i];
1162}
1163
1164return(z); };
1165
1166// ---------------------------------------------------------------------------------- //
1186template <class T>
1187std::vector< std::vector< T > > operator/ (
1188 const std::vector< std::vector< T > > &x,
1189 const T &y
1190) {
1191
1192// ================================================================================== //
1193// VARIABLES DECLARATION //
1194// ================================================================================== //
1195size_t n = x.size();
1196std::vector< std::vector< T > > z(n);
1197
1198// ================================================================================== //
1199// DIVIDE X BY Y //
1200// ================================================================================== //
1201for (size_t i = 0; i < n; i++) {
1202 z[i] = x[i]/y;
1203}
1204
1205return(z); };
1206
1207// Operator "/=" ==================================================================== //
1208
1209// ---------------------------------------------------------------------------------- //
1228template <class T>
1229std::vector< T >& operator/= (
1230 std::vector< T > &x,
1231 const std::vector< T > &y
1232) {
1233
1234 // ================================================================================== //
1235// VARIABLES DECLARATION //
1236// ================================================================================== //
1237size_t n = std::min(x.size(), y.size());
1238
1239// ================================================================================== //
1240// PERFORM SUM //
1241// ================================================================================== //
1242for (size_t i = 0; i < n; i++){
1243 x[i] /= y[i];
1244};
1245
1246return (x); };
1247
1248// ---------------------------------------------------------------------------------- //
1267template <class T>
1268std::vector< T >& operator/= (
1269 std::vector< T > &x,
1270 const T &y
1271) {
1272
1273// ================================================================================== //
1274// VARIABLES DECLARATION //
1275// ================================================================================== //
1276size_t n = x.size();
1277
1278// ================================================================================== //
1279// PERFORM SUM //
1280// ================================================================================== //
1281for (size_t i = 0; i < n; i++){
1282 x[i] /= y;
1283};
1284
1285return (x); };
1286
1287// ---------------------------------------------------------------------------------- //
1306template <class T>
1307std::vector< std::vector< T > >& operator/= (
1308 std::vector< std::vector< T > > &x,
1309 const T &y
1310) {
1311
1312// ================================================================================== //
1313// VARIABLES DECLARATION //
1314// ================================================================================== //
1315size_t n = x.size();
1316
1317// ================================================================================== //
1318// PERFORM SUM //
1319// ================================================================================== //
1320for (size_t i = 0; i < n; i++) {
1321 x[i] /= y;
1322} //next i
1323
1324return (x); };
1325
1335// Output operator ================================================================== //
1336
1337// ---------------------------------------------------------------------------------- //
1352template <class T>
1353std::ostream& operator<< (
1354 std::ostream &out,
1355 const std::vector< T > &x
1356) {
1357
1358 // ================================================================================== //
1359// VARIABLES DECLARATION //
1360// ================================================================================== //
1361
1362// Local variables
1363size_t n = x.size();
1364
1365// Counters
1366// none
1367
1368// ================================================================================== //
1369// OUTPUT VECTOR CONTENT //
1370// ================================================================================== //
1371if (n == 0) return(out);
1372for (size_t i = 0; i < n-1; i++) {
1373 out << x[i] << " ";
1374} //next i
1375out << x[n-1];
1376
1377return(out); };
1378
1379// ---------------------------------------------------------------------------------- //
1394template <class T>
1395std::ofstream& operator<< (
1396 std::ofstream &out,
1397 const std::vector< T > &x
1398) {
1399
1400// ================================================================================== //
1401// VARIABLES DECLARATION //
1402// ================================================================================== //
1403
1404// Local variables
1405size_t n = x.size();
1406
1407// Counters
1408// none
1409
1410// ================================================================================== //
1411// OUTPUT VECTOR CONTENT //
1412// ================================================================================== //
1413if (n == 0) {
1414 return(out);
1415}
1416for (size_t i = 0; i < n-1; i++) {
1417 out << x[i] << " ";
1418} //next i
1419out << x[n-1];
1420
1421return(out); };
1422
1423namespace bitpit {
1424
1425// Output operator ================================================================== //
1426
1427// ---------------------------------------------------------------------------------- //
1442template <class T>
1443Logger& operator<< (
1444 Logger &out,
1445 const std::vector< T > &x
1446) {
1447
1448 // ================================================================================== //
1449// VARIABLES DECLARATION //
1450// ================================================================================== //
1451
1452// Local variables
1453size_t n = x.size();
1454
1455// Counters
1456// none
1457
1458// ================================================================================== //
1459// OUTPUT VECTOR CONTENT //
1460// ================================================================================== //
1461if (n == 0) return(out);
1462for (size_t i = 0; i < n-1; i++) {
1463 out << x[i] << " ";
1464} //next i
1465out << x[n-1];
1466
1467return(out); };
1468
1469}
1470
1471// Input operator =================================================================== //
1472
1473// ---------------------------------------------------------------------------------- //
1489template <class T>
1490std::istream& operator>> (
1491 std::istream &in,
1492 std::vector< T > &x
1493) {
1494
1495// ================================================================================== //
1496// VARIABLES DECLARATION //
1497// ================================================================================== //
1498
1499// Local variables
1500T dummy;
1501size_t n = x.size();
1502
1503// Counters
1504size_t i;
1505
1506// ================================================================================== //
1507// EXTRACT STREAM CONTENT INTO VECTOR //
1508// ================================================================================== //
1509i = 0;
1510while ((in.good()) && (i < n)) {
1511 if (in >> dummy) { x[i] = dummy; i++; }
1512} //next i
1513while (in.good()) {
1514 if (in >> dummy) { x.push_back(dummy); }
1515}
1516
1517return(in); };
1518
1519// ---------------------------------------------------------------------------------- //
1535template <class T>
1536std::ifstream& operator>> (
1537 std::ifstream &in,
1538 std::vector< T > &x
1539) {
1540
1541// ================================================================================== //
1542// VARIABLES DECLARATION //
1543// ================================================================================== //
1544
1545// Local variables
1546T dummy;
1547
1548// Counters
1549int i, n = x.size();
1550
1551// ================================================================================== //
1552// EXTRACT FILE CONTENT INTO VECTOR //
1553// ================================================================================== //
1554i = 0;
1555while ((in.good()) && (i < n)) {
1556 if (in >> dummy) { x[i] = dummy; i++; }
1557} //next i
1558while (in.good()) {
1559 if (in >> dummy) { x.push_back(dummy); }
1560}
1561
1562return(in); };
1563
1573// Miscellanea ====================================================================== //
1574
1575// ---------------------------------------------------------------------------------- //
1584template<typename T, typename std::enable_if< std::is_scalar< T >::value>::type*>
1585std::ostream& display(
1586 std::ostream &out,
1587 const T &x
1588) {
1589
1590// ================================================================================== //
1591// VARIABLES DECLARATION //
1592// ================================================================================== //
1593// none
1594
1595// ================================================================================== //
1596// DISPLAY VARIABLE //
1597// ================================================================================== //
1598out << x;
1599
1600return(out); }
1601
1602// ---------------------------------------------------------------------------------- //
1612template<class T>
1613std::ostream& display(
1614 std::ostream &out,
1615 const std::vector<T> &x,
1616 unsigned int padding
1617) {
1618
1619// ================================================================================== //
1620// VARIABLES DECLARATION //
1621// ================================================================================== //
1622
1623// Counters
1624typename std::vector<T>::const_iterator i, e = x.cend();
1625
1626// ================================================================================== //
1627// DISPLAY VECTOR //
1628// ================================================================================== //
1629if (x.size() == 0) {
1630 out << "[ ]";
1631 return(out);
1632}
1633out << std::string(padding, ' ') << "[ ";
1634--e;
1635for (i = x.begin(); i != e; ++i) {
1636 display(out, *i) << ", ";
1637} //next i
1638display(out, *e) << " ]";
1639
1640return(out); }
1641
1642// ---------------------------------------------------------------------------------- //
1651template<typename T, typename std::enable_if< std::is_scalar< T >::value>::type*>
1652std::ofstream& display(
1653 std::ofstream &out,
1654 const T &x
1655) {
1656
1657// ================================================================================== //
1658// VARIABLES DECLARATION //
1659// ================================================================================== //
1660// none
1661
1662// ================================================================================== //
1663// DISPLAY VARIABLE //
1664// ================================================================================== //
1665out << x;
1666
1667return(out); }
1668
1669// ---------------------------------------------------------------------------------- //
1679template<class T>
1680std::ofstream& display(
1681 std::ofstream &out,
1682 const std::vector<T> &x,
1683 unsigned int padding
1684) {
1685
1686// ================================================================================== //
1687// VARIABLES DECLARATION //
1688// ================================================================================== //
1689
1690// Counters
1691typename std::vector<T>::const_iterator i, e = x.cend();
1692
1693// ================================================================================== //
1694// DISPLAY VECTOR //
1695// ================================================================================== //
1696if (x.size() == 0) {
1697 out << "[ ]";
1698 return(out);
1699}
1700out << std::string(padding, ' ') << "[ ";
1701--e;
1702for (i = x.begin(); i != e; ++i) {
1703 display(out, *i) << ", ";
1704} //next i
1705display(out, *e) << " ]";
1706
1707return(out); }
1708
std::ostream & display(std::ostream &out, const T &x)
std::vector< T > operator*(const std::vector< T > &x, const std::vector< T > &y)
std::vector< T > operator-(const std::vector< T > &x, const std::vector< T > &y)
std::vector< T > operator/(const std::vector< T > &x, const std::vector< T > &y)
std::vector< T > & operator-=(std::vector< T > &x, const std::vector< T > &y)
std::vector< T > operator+(const std::vector< T > &x, const std::vector< T > &y)
std::vector< T > & operator/=(std::vector< T > &x, const std::vector< T > &y)
std::vector< T > & operator+=(std::vector< T > &x, const std::vector< T > &y)
std::vector< T > & operator*=(std::vector< T > &x, const std::vector< T > &y)
std::istream & operator>>(std::istream &in, std::vector< T > &x)
std::ostream & operator<<(std::ostream &out, const std::vector< T > &x)
--- layout: doxygen_footer ---