双打位于文本文件中,并以空格分隔。它们是(x,y)线。下面的代码在存储后将不读取该行并打印顶点。
代码:
int main(int argc, char *argv[]) {
vector < pair < double, double > > verticies;
double firstDouble , secondDouble;
for ( int i = 0; i < 10; ++i ) {
std::cin >> getline(cin, firstDouble, secondDouble);
verticies.insert(firstDouble, secondDouble);
std::cout << verticies::at(i) << endl;
}
}
答案 0 :(得分:3)
您在这里遇到几个问题:
std::getline
。只需编写std::cin >> firstDouble >> secondDouble
。insert
用于在向量的中间插入元素。使用push_back
或emplace_back
将元素附加到向量。insert
和push_back
采用要插入的元素的值,在这种情况下为一对双精度值(两个双精度值不会自动变为一对双精度值)。因此,您需要使用std::make_pair
构造一个对或使用emplace_back
,这将把参数转发给该对的构造函数。verticies::at(i)
应该是verticies.at(i)
。<<
运算符仅知道如何打印基本类型(如int和double)。要打印其他类型,您需要像std::cout << verticies.at(i).first << ' ' << verticies.at(i).second << '\n'
一样单独打印其成员,或者使<<
运算符重载以打印一对。(您拼写的“顶点”错误。)