您可以通过执行设置ArrayList的初始大小
ArrayList<Integer> arr=new ArrayList<Integer>(10);
Run Code Online (Sandbox Code Playgroud)
但是,你做不到
arr.add(5, 10);
Run Code Online (Sandbox Code Playgroud)
因为它会导致越界异常.
如果您无法访问分配的空间,设置初始大小有什么用?
add函数定义为add(int index, Object element)
我没有添加到索引10.
以下指针集之间有什么区别?什么时候在生产代码中使用每个指针,如果有的话?
例子将不胜感激!
scoped_ptr
shared_ptr
weak_ptr
intrusive_ptr
你在生产代码中使用boost吗?
在C++中是否有可能拥有一个static
和virtual
?的成员函数?显然,没有一种直接的方法(static virtual member();
编译错误),但是至少有一种方法可以达到同样的效果吗?
IE:
struct Object
{
struct TypeInformation;
static virtual const TypeInformation &GetTypeInformation() const;
};
struct SomeObject : public Object
{
static virtual const TypeInformation &GetTypeInformation() const;
};
Run Code Online (Sandbox Code Playgroud)
这是有道理的使用GetTypeInformation()
上的一个实例(都object->GetTypeInformation()
)和一类(SomeObject::GetTypeInformation()
),它可以为模板,比较有用和重要.
我能想到的唯一方法包括编写两个函数/一个函数和一个常量,每个类,或使用宏.
还有其他方法吗?
我有一个使用FileReader打开文件的Java进程.如何防止另一个(Java)进程打开此文件,或者至少通知第二个进程该文件已被打开?如果文件是打开的(这解决了我的问题),这是否会自动使第二个进程获得异常,或者我是否必须在第一个进程中使用某种标志或参数显式打开它?
我有一个Java应用程序,它列出了一个文件夹,并打开列表中的每个文件进行处理.它会逐个处理每个文件.每个文件的处理包括读取它并根据内容进行一些计算,大约需要2分钟.我还有另一个Java应用程序执行相同的操作,而是写入文件.我想要的是能够同时运行这些应用程序,所以场景就是这样的.ReadApp列出文件夹并找到文件A,B,C.它打开文件A并开始读取.WriteApp列出文件夹并找到文件A,B,C.它打开文件A,看到它是打开的(通过异常或任何方式)并转到文件B. ReadApp完成文件A并继续到B.它看到它是开放的,继续到C. WriteApp没有至关重要 当ReadApp读取同一文件时写入,反之亦然.它们是不同的过程.
如果我有一个需要使用a的函数shared_ptr
,那么传递它的引用会不会更有效(所以为了避免复制shared_ptr
对象)?有哪些可能的不良副作用?我设想了两种可能的情况:
1)在函数内部,复制由参数组成,如
ClassA::take_copy_of_sp(boost::shared_ptr<foo> &sp)
{
...
m_sp_member=sp; //This will copy the object, incrementing refcount
...
}
Run Code Online (Sandbox Code Playgroud)
2)在函数内部仅使用参数,例如
Class::only_work_with_sp(boost::shared_ptr<foo> &sp) //Again, no copy here
{
...
sp->do_something();
...
}
Run Code Online (Sandbox Code Playgroud)
我无法在两种情况下都看到传递boost::shared_ptr<foo>
by值而不是引用的充分理由.按值传递只会"暂时"增加由于复制而引用的引用计数,然后在退出函数范围时减少它.我忽略了什么吗?
只是为了澄清,在阅读了几个答案之后:我完全赞同过早优化的问题,而且我总是试着先在热点上进行首次剖析.如果你知道我的意思,我的问题更多来自纯粹的技术代码观点.
我正在学习C++,我找到了一些我无法理解的东西:
可以显式刷新输出缓冲区以强制写入缓冲区.默认情况下,读取
cin
刷新cout
;cout
程序正常结束时也会刷新.
因此刷新缓冲区(例如输出缓冲区):这是通过删除缓冲区中的所有内容来清除缓冲区还是通过输出缓冲区中的所有内容来清除缓冲区?或者冲洗缓冲区意味着完全不同的东西?
我需要从外部域获取json数据.我使用webrequest来获取网站的回复.这是代码:
var request = WebRequest.Create(url);
string text;
var response = (HttpWebResponse) request.GetResponse();
using (var sr = new StreamReader(response.GetResponseStream()))
{
text = sr.ReadToEnd();
}
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么我不能得到json数据?
我想std::set
用自定义比较函数创建一个.我可以将它定义为一个类operator()
,但我想享受定义使用它的lambda的能力,所以我决定在具有std::set
as成员的类的构造函数的初始化列表中定义lambda函数.但我无法得到lambda的类型.在我继续之前,这是一个例子:
class Foo
{
private:
std::set<int, /*???*/> numbers;
public:
Foo () : numbers ([](int x, int y)
{
return x < y;
})
{
}
};
Run Code Online (Sandbox Code Playgroud)
我在搜索后找到了两个解决方案:一个,使用std::function
.只需设置比较函数类型std::function<bool (int, int)>
,就像我一样传递lambda.第二个解决方案是编写一个make_set函数,就像std::make_pair
.
解决方案1:
class Foo
{
private:
std::set<int, std::function<bool (int, int)> numbers;
public:
Foo () : numbers ([](int x, int y)
{
return x < y;
})
{
}
};
Run Code Online (Sandbox Code Playgroud)
解决方案2:
template <class Key, class Compare>
std::set<Key, Compare> make_set (Compare compare) …
Run Code Online (Sandbox Code Playgroud) 有没有什么好方法(也是一种简单的方法)使用Boost来读写XML文件?
我似乎无法使用Boost找到任何简单的示例来读取XML文件.你能指出一个使用Boost读取和编写XML文件的简单示例吗?
如果不是Boost,是否有任何好的和简单的库来读写您可以推荐的XML文件?(它必须是C++库)
在C程序中,如果我们想从终端提供一些输入,那么我们可以通过以下方式给出:
int main(int argc, char *argv[])
Run Code Online (Sandbox Code Playgroud)
同样,如果我们想获得main()
函数的返回值,那么我们如何才能得到它?
在每个main()
我们写return 1
或return 0
; 我怎么知道我main()
在码头回来了什么?
编辑:1
我得到它,因为echo $?
我们可以获得返回值,main()
但它只允许我成功返回小于125(在Linux中)的值.不止于此返回值不能被成功地接收到$ variable
这样
为什么int
回归类型main()
?为什么不保留它short int
?
EDIT2
如果main()
返回大于125的值,我在哪里可以找到错误代码的含义?