我正在尝试从大小为7,140,000的ArrayList中删除140,000个对象.我预计这将需要几秒钟(如果那样),而是Java每千个对象需要几秒钟.这是我的代码:
for (int i = list.size(); i > P; i--)
{
int size = list.size();
int index = (int) (Math.random() * size);
list.remove(index);
}
Run Code Online (Sandbox Code Playgroud)
注意:P是我之前设置为7,000,000的常量.
循环的目标是从列表中随机删除对象,直到其大小为7,000,000.
Java花了这么长时间,因为我开始使用超过700万个对象?我从未注意到过去从ArrayLists中删除这个效率问题.如果有帮助,我使用DrJava Beta IDE.
当我应该得到一个数字时,我编写的 Java 程序的输出却给出了“Infinity”。我正在使用浮点数,并且我认为我的数字不会超出浮点数可以处理的范围。
我的问题是,如果 Java 计算的值大于所使用的数据类型可以处理的值,我是否会得到“Infinity”作为输出?或者只有当我在某个地方不小心除以零时才返回“无穷大”。
我一直在学习try-catch
C++中的块,我不理解该catch
函数的语法.在cppreference上,它说如下:
1)在catch子句中声明形式参数:
catch (const std::exception& e) { /* */ }
Run Code Online (Sandbox Code Playgroud)
2)声明一个未命名的参数:
catch (const std::exception&) { /* */ }
Run Code Online (Sandbox Code Playgroud)
3)编写一个"catch-all handler"(不确定这意味着什么),它被激活用于任何异常:
catch (...) { /* */ }
Run Code Online (Sandbox Code Playgroud)
问题:
1)这些catch
块之间有什么区别?我不确定形式参数,未命名参数和"catch-all handler"有何不同.
2)e
该catch
条款的参数是什么类型的?是类型exception
吗?除了示例中,我从未见过如何编写try-catch
块的类型.如果是这样,我怎么能在一个catch
子句中使用它,比方说,输出一条错误信息?e
当我抛出错误时,可以接受我发送的字符串吗?
3)我已经尝试并编写了try-catch
如下块:
#include <iostream>
#include <string>
#include <stdexcept>
try
{
throw invalid_argument("Error, program stopped.");
}
catch(const string& e)
{
cout << e;
}
Run Code Online (Sandbox Code Playgroud)
此代码成功调用catch
块并打印我的消息:"Error, program stopped." …
在这个问题(/sf/ask/484850341/)中,user703016使用以下语法来访问vector cards_的迭代器:
对于C++ 98,他们建议使用:cards_.begin()和cards_.end()
对于C++ 11,他们建议使用:std :: begin(cards_)和std :: end(cards_)
对于C++ 14,哪种语法更可取,两者之间是否有任何真正的区别?在今天之前,我只看到了第一种语法.
我正在用 Java 编写一个程序,我需要一个类似于空格(“”)的字符,只是显示时长度较小。理想情况下,字符大小是空格字符的一半。
我想知道是否存在这样的字符,或者是否有办法修改空格字符的长度,使其在输出给用户时更小。
我的编译器给出了以下代码的错误:
#include <iostream>
#include <stdexcept>
using namespace std;
void test()
{
throw runtime_error("Error");
}
int main()
{
try
{
test();
}
for (int i = 0; i < 10; i++)
{
}
catch (exception& e)
{
cout << e.what();
}
}
Run Code Online (Sandbox Code Playgroud)
它说"错误:预期'捕获'之前'('令牌',它指的是for循环初始化中的'(').
在try块之后我是否必须立即编写catch块?我认为如果在try块中抛出一个错误,程序将冒出来,直到它找到一个合适的catch块.为什么这不适用于此?