gpt4 book ai didi

c++ - 如何将 vector 对象从一个类传递到另一个类

转载 作者:太空宇宙 更新时间:2023-11-04 12:25:25 25 4
gpt4 key购买 nike

这就是我尝试使用我得到的答案之一发送 vector 的方式。但还没有成功。应该在它到达拍卖师时复制。我想展示。

class Trader {   
private:
int nextBidId;

public:

void loadRange( vector <Bid> & bids ) {} ;

class Simulator //Receives from the Trader,doent modify
{
vector <Bid> bids;
Trader trader;
Auctioneer auctioneer;

public:
void run();
};

void Simulator::run() {
trader.loadRange(vector<Bid> & bids);
auctioneer.accept_bids(bid_vector::const_iterator begin, bid_vector::const_iterator end);
auctioneer.displayBids();
}

class Auctioneer // Has to receive from the simulator class
{

public:
vector <Bid> bids,v2;
void accept_bids(vector<Bid> & bids);
void displayBids(){cout << "\tBid\t(" << setw(3) << bids.bidId << "\t " << setw(3) << bids.trdId << "\t "
<< setw(3) << bids.type <<"\t " << setw(3) << bids.qty <<"\t " << setw(3)
<< bids.price <<")\t\n " ; }
};

更新

我刚刚从另一个类复制了一个 vector ,现在我试图查看它的内容。它返回一个错误:

错误:- begin 尚未声明。我如何为 vector decalre bigin?

void Auctioneer::accept_bids(const BidList& bid){ 
vector<Auctioneer> *list;
vector<Auctioneer>::iterator itr; // create an iterator

for ( itr = list.begin();
itr != list.end(); ++itr )
cout << *itr << ' ';
}

最佳答案

选项 1:只传递 vector 的拷贝

只需将 vector 传递给 B 类中的一个函数(例如 B::accept_bids(const bid_vector& bids) ,或者可能使用迭代器 B::accept_bids(bid_vector::const_iterator begin, bid_vector::const_iterator end) ),然后让该函数使用赋值运算符(或 std::copy() 如果你使用迭代器)。这是最简单直接的解决方案。

选项 2:您的 vector 很大,复制它的成本(分配时间、复制时间、内存使用)很高

像上面那样传递 vector ,但不是获取 vector 的拷贝,而是存储引用(或迭代器)并确保 A 类的原始 vector 拷贝在传递给类后不会消失或改变B.

或者,使用 std::auto_ptr 传递它并明确(使用函数名称,例如 give_bid_vector(std::auto_ptr<bid_vector> bids) )B 类正在取得 vector 的所有权。这意味着 A 类不再是 vector 的所有者,不应将其删除。

关于c++ - 如何将 vector 对象从一个类传递到另一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2797230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com