我有一个"连接四板",我用二维数组模拟(数组[x] [y] x = x坐标,y = y坐标).我必须使用"System.out.println",所以我必须遍历行.
我需要一种方法迭代这种方式[0,0] [1,0] [2,0] [3,0] [0,1] [1,1] [2,1]等
如果我使用正常程序:
for (int i = 0; i<array.length; i++){
for (int j = 0; j<array[i].length; j++){
string += array[i][j];
} System.out.println(string)
}
Run Code Online (Sandbox Code Playgroud)
它不起作用,因为它以这种方式迭代[0,0] [0,1] [0,2] [0,3]等
正常的过程保持在x并增加y直到列的结尾,但我需要在y中说并递增x直到行的结尾.
我现在正在编写测试用例,并创建了一些我尝试阅读的测试文件.绝对路径是:
/home/user/code/Project/source/Project/components/Project/test/file.dat
Run Code Online (Sandbox Code Playgroud)
但是出于明显的原因,用绝对路径进行测试是不好的.所以我尝试将绝对路径转换为相对路径,我不知道为什么它不起作用.我用相对路径创建了一个文件
findme.dat
Run Code Online (Sandbox Code Playgroud)
我找到了它
/home/user/code/Project/build/source/Project/components/Project/test/findme.dat
Run Code Online (Sandbox Code Playgroud)
所以我创建了相对路径
/../../../../../../source/Project/components/Project/test/file.dat
Run Code Online (Sandbox Code Playgroud)
但该文件未打开且与is对象
无关std::ifstream is (path);,并且该is.is_open()函数返回fulse.
你能帮助我吗?
操作系统:Kubuntu 14.04,Tensorflow 版本 = 0.12,Python 版本 = 2.7
我的最后一层后,我的神经网络的输出具有形状[batch, height, width, 2]这是[64, 32, 256, 2]在我的情况。
之后我用
output = tf.contrib.layers.flatten(input=output)
Run Code Online (Sandbox Code Playgroud)
产生具有形状的张量[64, 16384]
出于评估目的,我想在不同的函数中反转这种扁平化以[64, 32, 256, 2]恢复原始张量。
那怎么办呢?
我有以下代码:
std::string extract() {
fstream openfile("/home/name/Documents/testfile");
std::string teststring;
long location = 4;
long length = 2;
teststring.resize(length);
char* begin = *teststring.begin();
openfile.seekp(location);
openfile.read(begin, length);
return teststring;
}
Run Code Online (Sandbox Code Playgroud)
此代码应返回文件中找到的字符串.例如,如果文件的内容是
StackOverflow
Run Code Online (Sandbox Code Playgroud)
这个方法应该返回
kO
Run Code Online (Sandbox Code Playgroud)
此代码由友好的StackOverflow用户提供给我.我的问题是,我得到一个编译错误,上面写着:"从char*到char的转换无效".问题是
char* begin = *teststring.begin();
Run Code Online (Sandbox Code Playgroud)
线.我怎样才能解决这个问题?
我有一个全局变量
volatile i = 0;
Run Code Online (Sandbox Code Playgroud)
和两个线程.每个都做以下事情:
i++;
System.out.print(i);
Run Code Online (Sandbox Code Playgroud)
我收到以下组合.12,21和22.
我理解为什么我没有得到11(挥发性不允许缓存我),我也理解12和22.
我不明白的是如何获得21?
获得此组合的唯一可能方法是,稍后打印的线程必须是第一个i从0 递增到1然后缓存的线程i==1.然后另一个线程i从1 递增到2然后打印2.然后第一个线程打印缓存i==1.但我认为volatile不允许缓存.
编辑:运行代码10,000次后,我得到11次.添加volatile到i根本不会改变可能的组合.
markspace是对的:volatile禁止缓存i但i++不是原子的.这意味着i在递增期间仍然会在寄存器中"缓存".
r1 = i
//if i changes here r1 does not change
r1 = r1 + 1
i = r1
Run Code Online (Sandbox Code Playgroud)
这就是11仍然可能的原因.引起21是因为PrintStreams不同步(参见Karol Dowbecki的回答)
我想创建一个名为sessionname. 如果具有此名称的文件夹已经存在,那很好,我不想做任何事情。
现在我这样做:
finalpath = "/home/Documents"
finalpath.append(path + "/" + sessionname);
if (mkdir(finalpath.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) == -1)
{
//INVALID PATH
std::cout << "path is invalid, cannot create sessionnamefolder" << std::endl;
throw std::exception();
}
Run Code Online (Sandbox Code Playgroud)
此代码错误,如果文件夹/home/Documents/sessionname存在,因为无法创建文件夹。
如何检查是否mkdir因为字符串无效或字符串有效但文件夹已存在而失败?
我有一个矢量::
static const std::vector<float> vector1
Run Code Online (Sandbox Code Playgroud)
和一个向量的引用:
std::vector<float> const& vector2
Run Code Online (Sandbox Code Playgroud)
我需要将这些矢量的值相互相乘,并将它们存储在一个新的矢量中.
例如:
result[0]=vector1[0]*vector2[0]
result[1]=vector1[1]*vector2[1]
Run Code Online (Sandbox Code Playgroud)
然后我需要将这个向量赋给一个只接受的方法:
std::vector<float> const& result
Run Code Online (Sandbox Code Playgroud)
我如何在C++中执行此操作?