【发布时间】:2016-05-08 13:40:19
【问题描述】:
我正在研究 C++ 中的算法,并试图通过将 cin 更改为 scanf 来加快其执行速度。但是当我这样做时,我开始出现 SIGSEGV 错误。
int main(){
int nominal;
int check;
string b;
int x;
int a;
int i = 0;
//cin >> a;
scanf ("%d",&a);
for (int i = 0; i<a; i++){
//cin >> b;
scanf("%s",&b);
std::priority_queue < int > Q;
std::priority_queue < int, std::vector < int >, std::greater < int > > moneyBox;
while (b!="0"){
代码在输入第一个 while 时停止工作。有关如何修复它的任何提示?
【问题讨论】:
-
您不能将
std::string与scanf("%s",&b);一起使用。请改用getline()或cin >> b;。 -
@πάνταῥεῖ 不完全正确。他可以使用
resize(big_enough),然后使用data()成员,然后将大小设置为正确的值。 -
除了技术性之外 - 在这里,您不会因为这种变化而加快速度。除非您是高速打字员,否则写入输入所需的时间会产生时间差异 - 如果您的更改有任何变化可以忽略不计。
-
@BitTickler 算法正在被在线法官检查
标签: c++ memory scanf segmentation-fault