我有一个阵列
arr[10]
Run Code Online (Sandbox Code Playgroud)
它试图访问
arr[12]
Run Code Online (Sandbox Code Playgroud)
直到我意识到我切换到向量时,程序才做任何事情.在某处我读到如果我使用[]那么程序不会再给出任何运行时错误,所以我应该使用std::vector's at.但在我刚刚使用的程序中[],它帮助我发现了问题.看来[]已经足够了.我对吗?此外,是否有任何绑定检查阵列的安全性?
让我们有,
std::array <int,5> STDarr;
std::vector <int> VEC(5);
int RAWarr[5];
Run Code Online (Sandbox Code Playgroud)
我试图得到它们的大小,
std::cout << sizeof(STDarr) + sizeof(int) * STDarr.max_size() << std::endl;
std::cout << sizeof(VEC) + sizeof(int) * VEC.capacity() << std::endl;
std::cout << sizeof(RAWarr) << std::endl;
Run Code Online (Sandbox Code Playgroud)
输出是,
40
20
40
Run Code Online (Sandbox Code Playgroud)
这些计算正确吗?考虑到我没有足够的内存std::vector并且无法逃避动态分配,我应该使用什么?如果我知道这会std::array导致内存需求降低,我可以更改程序以使数组静态。
在下面的代码我设置ofd1.RestoreDirectory为false不过,该对话框打开inital目录每次.有什么东西我不知道吗?
private void btnMeshFile_Click(object sender, EventArgs e)
{
OpenFileDialog ofd1 = new OpenFileDialog();
ofd1.Title = "Open";
ofd1.InitialDirectory = @"c:\";
ofd1.Filter = "All files (*.*)|*.*|All files (*.*)|*.*";
ofd1.FilterIndex = 2;
ofd1.RestoreDirectory = false;
if (ofd1.ShowDialog() == DialogResult.OK)
{
string fileName = Path.GetFileName(ofd1.FileName);
MeshDirectoryPath = Path.GetFullPath(ofd1.FileName).Replace(@"\", @"\\");
txtMeshFile.Text = fileName;
}
}
Run Code Online (Sandbox Code Playgroud) 让我们,
float dt;
Run Code Online (Sandbox Code Playgroud)
我dt从一个文本文件中读取
inputFile >> dt;
Run Code Online (Sandbox Code Playgroud)
然后我有一个for循环,因为,
for (float time=dt; time<=maxTime; time+=dt)
{
// some stuff
}
Run Code Online (Sandbox Code Playgroud)
什么时候dt=0.05输出std::cout << time << std::endl;我得到的,
0.05
0.10
...
7.00001
7.05001
...
Run Code Online (Sandbox Code Playgroud)
那么,为什么一段时间后数字会增加?
让我们
std::vector myVec;
myVec.reserve(10);
Run Code Online (Sandbox Code Playgroud)
如果我只分配了5个元素,我怎样才能重新获得为其他5个元素分配的内存?
在C#中为什么我可以打电话
var intStr = 1.ToString();
var strStr = "1".ToString();
Run Code Online (Sandbox Code Playgroud)
1和"1"是常量文字,为什么object.ToString()不导致错误?
在下面的代码中,目标是具有reference_wrapper<int> b这样一种特性,即当a更改时b也会更改,但是不允许相反,也就是说,a更改时不应b更改。我尝试了两种方法:第7行和第8行。第7行导致编译器抱怨它无法从第8行编译时毫无问题地转换为int,const int但是结果却不是我想要的(a更改时b更改了)。任何的想法?
1. #include <iostream>
2. #include <functional>
3. using namespace std;
4.
5. int main() {
6. int a = 1;
7. //reference_wrapper<const int> b = ref(a);
8. //const reference_wrapper<int> b = ref(a);
9. return 0;
10. }
Run Code Online (Sandbox Code Playgroud) 我工作的集群上有几个分区。随着sinfo我可以看到每个分区的时间限制。我把我的代码放在mid1有时间限制的分区上8-00:00:00,我知道时间限制是 8 天。我不得不等待,1-15:23:41这意味着将近 1 天 15 小时。但是,我的代码仅运行了00:02:24近 2.5 分钟(并且解决方案正在收敛)。另外,我没有在提交的文件中设置时间限制sbatch我的代码停止的原因如下:
JOB 3216125 CANCELLED AT 2015-12-19T04:22:04 DUE TO TIME LIMIT
Run Code Online (Sandbox Code Playgroud)
那么,如果我没有超过时间限制,为什么我的代码被停止了?我向负责集群的人提出了这个问题,但他们没有回来。
我使用的是 Windows 7 和 php5.6。
php_oci8_12c.dll存在,但我找不到它。其他模块正常。
错误日志:
PHP 警告:PHP 启动:无法加载动态库 'C:/Server/bin/ext\php_oci8_12c.dll' - 找不到指定的模块。\r\n 在第 0 行的未知中
btn_Edit窗口中有一个按钮.单击该按钮时,将打开一个新窗口(new_win),并在按钮(btn_OK)上添加一个单击事件new_win.似乎btn_OK_Click不起作用因为new_win没有关闭.问题出在哪儿?
BC_edit new_win = new BC_edit();
private void btn_Edit_Click(object sender, RoutedEventArgs e)
{
new_win.Title = "a_title";
new_win.ShowDialog();
new_win.btn_OK.Click += new RoutedEventHandler(btn_OK_Click);
}
private void btn_OK_Click(object sender, RoutedEventArgs e)
{
_MyCollection.Add(new MyData
{
Boundary = new_win.Title,
Type = new_win.cmb_BC_edit_type.SelectedItem.ToString(),
Option = new_win.cmb_BC_edit_options.SelectedItem.ToString()
});
new_win.Close();
}
Run Code Online (Sandbox Code Playgroud)