有没有办法这样做?我在寻找但却找不到任何东西.
另一个问题:我需要这些方法,所以我可以过滤文件.有些是AND过滤器和一些有OR过滤器(如在集合论),所以我需要根据所有文件进行过滤和团结/交叉持有这些文件的ArrayList.
我应该使用不同的数据结构来保存文件吗?还有什么能提供更好的运行时间吗?
我试图将字符串(即localhost或127.0.0.1)中的IP号或名称指定的地址转换为InetAdress对象.没有构造函数,而是返回InetAddress的静态方法.所以,如果我得到一个主机名,这不是问题,但如果我得到IP号怎么办?有一种方法可以获取byte [],但我不确定这对我有什么帮助.所有其他方法都获取主机名.
我已经重定向"cin"来从文件流中读取cin.rdbug(inF.rdbug())
当我使用提取操作符时,它会读取它直到它到达空格字符.
是否可以使用另一个分隔符?我在cplusplus.com上浏览了api,但没有找到任何东西.
说我有这个功能:
int func2() {
printf("func2\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
现在我声明一个指针:
int (*fp)(double);
Run Code Online (Sandbox Code Playgroud)
这应该指向一个接受double参数并返回一个的函数int.
func2 没有任何争论,但是当我写作时:
fp = func2;
fp(2);
Run Code Online (Sandbox Code Playgroud)
(2只是一个任意数字),func2`被正确调用.
这是为什么?我为函数指针声明的参数数量没有意义吗?
一个让我烦恼的简单问题.假设我在main中定义了一个数组,就像这样int arr[5].现在,如果我仍然在main中并且我设置int i = sizeof(arr)/sizeof(arr[0])然后我被设置为5,但是如果我将数组作为函数参数传递并在此函数中执行完全相同的计算,则得到不同的数字.这是为什么?起初我认为它是因为在一个函数中arr是一个指针,但据我所知,它arr也是一个指针在主内部!
另外,如果我做一些非常相似的事情,我只是动态地初始化数组,我得到了奇怪的结果:
int *arr = (int*) malloc(sizeof(int) * 5);
int length = sizeof(*arr) / sizeof(arr[0]);
printf("%d\n",length);
Run Code Online (Sandbox Code Playgroud)
这里的输出是1.有什么想法吗?提前致谢!
我试图测量我的计算机执行不同操作所需的估计周期长度,因此我执行相同的操作100K次并计算平均值.我使用循环展开更准确:我在每次迭代中执行10个基本操作,并将索引增加10,从而减少循环操作.
对我的问题来说,这一切都不重要:编译器是否有任何方法可以理解我正在进行多次相同的操作而只执行一次?这是我的循环:
for (i=0; i<iterations; i+=LOOP_FACTOR)
{
result = -1;
result = -1;
result = -1;
result = -1;
result = -1;
result = -1;
result = -1;
result = -1;
result = -1;
result = -1;
}
Run Code Online (Sandbox Code Playgroud)
另外,我不知道它是否重要 - 我正在使用Eclipse.我认为这可能很重要因为那里有不同的编译器.
假设我有一个私有变量,我有一个setVariable()方法,它是否synchronized与使用volatile修饰符完全相同?
我正在调试我的程序,我注意到即使我已将几乎全部标记为注释,我所做的只是将双值推入向量,我有内存泄漏.我在c ++参考中读过api,但找不到任何东西.这是代码:
#include <vector>
#include <cstdlib>
#include <iostream>
#include "RegMatrix.h"
#include "Matrix.h"
using namespace std;
int main(void)
{
vector<double> v;
for (int i=0; i<9; i++)
{
v.push_back(i);
}
cout << endl;
exit(EXIT_SUCCESS);
}
Run Code Online (Sandbox Code Playgroud)
和valgrind的报告:
==9299== HEAP SUMMARY:
==9299== in use at exit: 128 bytes in 1 blocks
==9299== total heap usage: 5 allocs, 4 frees, 248 bytes allocated
==9299==
==9299== 128 bytes in 1 blocks are still reachable in loss record 1 of 1
==9299== at 0x402569A: operator new(unsigned int) …Run Code Online (Sandbox Code Playgroud) 我试图理解为什么以下代码是非法的:
int main ()
{
char *c = "hello";
c[3] = 'g'; // segmentation fault here
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译器遇到什么时会做什么char *c = "hello";?
我理解它的方式,它是一个自动的char数组,并且c是指向第一个char的指针.如果是这样,c[3]就像*(c + 3)我应该能够完成作业.
只是想了解编译器的工作方式.
我写的这段代码很简单
#include <stdio.h>
#include <string.h>
void printLastLetter(char **str)
{
printf("%c\n",*(*str + strlen(*str) - 1));
printf("%c\n",**(str + strlen(*str) - 1));
}
int main()
{
char *str = "1234556";
printLastLetter(&str);
return 1;
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我想打印字符串中的最后一个字符,我知道printLastLetter的第一行是正确的代码行.我不完全理解的是*str和**str之间的区别.第一个是字符数组,第二个是?另外,char*str和str [10]之间的内存分配有什么不同?Thnks
c ×4
c++ ×3
java ×3
arrays ×2
cin ×1
delimiter ×1
intersection ×1
ip ×1
list ×1
memory ×1
memory-leaks ×1
pointers ×1
size ×1
stream ×1
string ×1
synchronized ×1
union ×1
valgrind ×1
volatile ×1
whitespace ×1