【发布时间】:2021-12-10 15:27:30
【问题描述】:
在这里,我试图对向量中的元素执行计算和比较,找到平均值、较低值、较高值和差异。我在打印向量中元素的索引时也遇到了问题。
#include <iostream>
#include <string>
#include <vector>
enum class OrderBookType{bid, ask};
class OrderBookEntry{
public:
double price;
double amount;
std::string timestamp;
std::string product;
OrderBookType orderType;
double computeAveragePrice(std::vector<OrderBookEntry>& entries);
OrderBookEntry(double _price,
double _amount,
std::string _timestamp,
std::string _product,
OrderBookType _orderType):
price(_price),
amount(_amount),
timestamp(_timestamp),
product(_product),
orderType(_orderType) {
}
//* Other kinds of functions I hope to implement for this program. */
// double computeLowPrice(std::vector<OrderBookEntry>& entries);
// double computeHighPrice(std::vector<OrderBookEntry>& entries);
// double computePriceSpread(std::vector<OrderBookEntry>& entries);
};
double OrderBookEntry::computeAveragePrice(std::vector<OrderBookEntry> &entries) {
return 5.5; // Just trying to test a for an output here
}
int main() {
// Declaring vector entries
std::vector<OrderBookEntry> entries;
// Adding entries into entries
entries.push_back(OrderBookEntry{
10000,
0.001,
"2020/03/17 17:01:24.88492",
"BTC/USDT",
OrderBookType::bid
});
entries.push_back(OrderBookEntry{
20000,
0.002,
"2020/03/17 17:01:24.88492",
"BTC/USDT",
OrderBookType::bid
});
// Prints prices of all entries
for (OrderBookEntry& entry : entries) {
std::cout << "The price entry " << &entry << " is " << entry.price << std::endl;
}
std::cout << "The lower price is " << entries.computeAveragePrice() << std::endl;
return 0;
}
我在这里遇到三个问题。
首先,我无法调用 computeAveragePrice() 函数来获取它返回的值——在这种情况下,只有 5.5 的值用于测试。
上图是下面这行代码的错误信息。
std::cout << "The lower price is " << entries.computeAveragePrice() << std::endl;
其次,当我尝试打印向量中元素的索引时,我得到了一个奇怪的值。
以上是我得到的输出。我期待得到元素的相应索引,但得到了这个。这是我用来遍历向量的代码。
for (OrderBookEntry& entry : entries) {
std::cout << "The price entry " << &entry << " is " << entry.price << std::endl;
}
最后,我可以参考任何文章,这些文章教我如何对向量中的值执行算术运算,例如平均值、比较和查找差异。
提前谢谢你!
【问题讨论】:
-
computeAveragePrice是OrderBookEntry中的成员函数,但entries是std::vector<OrderBookEntry>,而不是OrderBookEntry。 -
感谢您的回复!所以我要做的是有一行将
OrderBookEntry包含到主函数中?我刚刚尝试将OrderBookEntry orderBookObjects包含到我的主函数中,并得到一个错误,指出OderBookEntry的初始化没有匹配的构造函数。我以此为参考,link -
在 cmets 中很难解释,所以我做了一个答案。
-
与其拥有一个知道如何计算向量中 OrderBookEntriy 平均价格的 OrderBookEntry,不如拥有一个包含
vector<OrderBookEntry>的OrderBook,并且知道如何计算它包含的条目。
标签: c++ loops class vector constructor