Re: [問題] C++ list 元素查看
上一篇是
The STL is for data type int
元素相加~
但如果是
STL using a class
例如:
#include <list>
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <string>
#include <fcntl.h>
#include <sys/time.h>
#include <unistd.h>
using namespace std;
class AAA
{
friend ostream &operator<<(ostream &, const AAA &);
public:
string x;
int y;
float z;
AAA();
AAA(const AAA &);
~AAA(){};
AAA &operator=(const AAA &rhs);
int operator==(const AAA &rhs) const;
int operator<(const AAA &rhs) const;
};
AAA::AAA() // Constructor
{
x = "NULL";
y = 0;
z = 0;
}
AAA::AAA(const AAA ©in) // Copy constructor to handle pass by value.
{
x = copyin.x;
y = copyin.y;
z = copyin.z;
}
ostream &operator<<(ostream &output, const AAA &aaa)
{
output << aaa.z << endl;
return output;
}
AAA& AAA::operator=(const AAA &rhs)
{
this->x = rhs.x;
this->y = rhs.y;
this->z = rhs.z;
return *this;
}
int AAA::operator==(const AAA &rhs) const
{
if( this->x != rhs.x) return 0;
if( this->y != rhs.y) return 0;
if( this->z != rhs.z) return 0;
return 1;
}
// This function is required for built-in STL list functions like sort
int AAA::operator<(const AAA &rhs) const
{
if( this->x == rhs.x && this->y == rhs.y && this->z < rhs.z) return 1;
if( this->x == rhs.x && this->y < rhs.y) return 1;
if( this->x < rhs.x ) return 1;
return 0;
}
main()
{
int sum = 0;
list<AAA> L;
AAA Ablob;
list<AAA>::iterator i;
Ablob.x="11";
Ablob.y=7;
Ablob.z=3.2355;
L.push_back(Ablob);
Ablob.x="11";
Ablob.y=7;
Ablob.z=7.2355;
L.push_back(Ablob);
cout<<"Ablob Unsort:"<<endl;
for(i=L.begin(); i != L.end(); ++i)
{
cout << *i ;
//sum = sum + *i;
}
cout << endl;
return 0;
}
要怎麼把 z這個成員的值相加,
也就是說我想要 3.2355 +7.2355 存到 sum,我用綠色這樣的方式不行
有人知道嗎?
謝謝~
※ 引述《hardware (硬體)》之銘言:
: 開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
: Linux G++
: 程式碼(Code):(請善用置底文網頁, 記得排版)
: #include <iostream>
: #include <list>
: using namespace std;
: main()
: {
: int count =1;
: list<int> L;
: L.push_back(0);
: L.push_front(0);
: L.insert(++L.begin(),2);
: L.push_back(5);
: L.push_back(6);
: L.sort();
: list<int>::iterator i;
: for(i=L.begin(); i != L.end(); ++i)
: {
: cout << "第" << count << "個 "<< *i << " "<< endl;
: count++;
: }
: return 0;
: }
: 我們都知道用 iterator去觀看list所有的元素。
: 也可以用 L.front();去看第一個元素,
: 但有什麼方法可以看第二個元素?
: 謝謝~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.117.89.77
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1449716239.A.D9C.html
→
12/10 11:08, , 1F
12/10 11:08, 1F
→
12/10 11:09, , 2F
12/10 11:09, 2F
→
12/10 11:12, , 3F
12/10 11:12, 3F
→
12/10 11:13, , 4F
12/10 11:13, 4F
→
12/10 11:16, , 5F
12/10 11:16, 5F
→
12/10 11:16, , 6F
12/10 11:16, 6F
→
12/10 11:19, , 7F
12/10 11:19, 7F
→
12/10 11:19, , 8F
12/10 11:19, 8F
double operator+(const AAA &rhs) const
{
...
}
這樣嗎?
但是我不知道裏面要寫什麼
然後在main裏面怎使用他QQ
※ 編輯: hardware (140.117.89.77), 12/10/2015 11:26:22
→
12/10 11:38, , 9F
12/10 11:38, 9F
→
12/10 11:38, , 10F
12/10 11:38, 10F
→
12/10 11:51, , 11F
12/10 11:51, 11F
→
12/10 11:52, , 12F
12/10 11:52, 12F
→
12/10 12:30, , 13F
12/10 12:30, 13F
→
12/10 14:01, , 14F
12/10 14:01, 14F
討論串 (同標題文章)