Articles of 数组

当加载/清除大量的数据时,std :: vector会变得越来越慢

问题 我有一个相当复杂的image processing应用程序,其中一个子模块需要将巨大的二进制位图加载到内存中。 实际上高达96 GB(意思是888 888 x 888 888像素的图像)。 磁盘是2xSSD raid0,读写速度约为1 GB / s。 它将图像加载到智能指针向量(每个元素表示8个像素)的向量中(每个元素表示一个位图中的一行)。 这里的一个奇怪的问题是,在重复加载和清除向量之后(我发现内存实际上是没有内存泄漏的填充和清除),每次迭代似乎花费的时间越来越长。 特别清理记忆需要很长时间。 testing 我做了一些简单的testing应用程序来testing这个孤立的,从不同的angular度。 用原始指针代替智能指针给了同样奇怪的行为。 然后,我试图使用本地数组而不是vector,并做了诀窍。 使用向量后,100次迭代的载入/清除24 GB时间急剧增加,而arrays实现时间稳定。 下面是testing应用程序填充内存与24 GB的垃圾,而不是加载一个实际的图像,具有相同的结果。 在Windows 10 Pro上使用128 GB RAM进行testing,并使用Visual Studio 2013 Update 5进行构build。 这个函数使用vector来加载/清除: void SimpleLoadAndClear_Vector(int width, int height) { time_t start_time, end_time; // Load memory time(&start_time); cout << "Loading image into memory…"; auto […]

如何从Linux shell中的文件中的二维数组中select一个元素

我是新的shell脚本,我需要的是从包含2d数组的文件中读取。 假设有一个名为test.dat的文件,其中包含以下值: – Paris London Lisbon – Manchester Nurnberg Istanbul – Stockholm Kopenhag Berlin 在Linux bash脚本中从这张表中select一个元素最简单的方法是什么? 例如,用户input-r 2 -c 2 test.dat,这意味着select在行[2]和列[2](Nurnberg)的元素。 我已经看到了读取命令和谷歌search,但大部分的例子是关于1D数组。 这个看起来很熟悉,但是完全不能理解。

如何读取csv文件到bash脚本中的数组

我写了下面的代码来读取我的csv文件(它有固定数量的列,但不是固定的行数)到我的脚本作为一个数组。 我需要它是一个shell脚本。 usernames x1 x2 x3 x4 username1, 5 5 4 2 username2, 6 3 2 0 username3, 8 4 9 3 我的代码 #!/bin/bash set oldIFS = $IFS set IFS=, read -a line < something.csv 我用过的另一个选项是 #!/bin/bash while IFS=$'\t' reaad -r -a line do echo $line done < something.csv 对于这两个我试过一些testing代码,看看arrays的大小将是什么,我似乎得到了第一个10的大小,但arrays只输出用户名。 对于第二个,我似乎得到0的大小,但数组输出整个csv。 帮助非常感谢!

C ++:如何将string对象复制到一个int数组?

我在C ++中有一串数字:like string str =“1234567012” 我希望将其复制到一个int数组中,使数组中的每个元素都有一个数字。 现在我可以使用一个迭代器,每次迭代一个,并使用static_cast<int>(*iter) 。 但是有没有更简单直接的方法? 最后我想recopy int数组到string数组。 请帮助我以上两个步骤。

传递一个数组作为Linux内核模块的命令行参数

我想将一组数据传递给Linux内核模块。 在内核中: int a[5]; int count; module_param_array(a, int, &count, 0); 但我不知道如何从命令行传递值。 如果它是一个variables,我将使用: insmod k1.ko a=10

溢出的缓冲区数据不会连续存储

我有以下代码来模拟缓冲区溢出。 编辑:我错过了下面的代码中的重要一步。 随着讨论的进行,variablesc得到了修改。 void function (int fd, int e) { int i = 0; int n; char c; char s[44]; . . c = getchar(fd); . //Some check on c s[i++] = c; . //Some more local variables and some operations on them. } 我想通过发送更多的input> 4字节溢出缓冲区,以查看如何本地variables和EBP和RET和参数得到修改。 但是,当我在GDB中debugging以查看堆栈帧时,此缓冲区溢出,溢出的数据似乎不会被分配连续的内存位置。 缓冲区基址:0xbfff fdb3 C地址:0xbfff fddf地址:0xbfff fde0 正如你所看到的,我的inputstring包含了大量的NOP(\ x90),然后大量的A(\ x41)。 […]

在arraysbash中存储grep输出

我需要在目录中search一个模式,并将包含它的文件的名称保存在一个数组中。 search模式: grep -HR "pattern" . | cut -d: -f1 这会打印出包含“pattern”的所有文件名。 如果我尝试: targets=$(grep -HR "pattern" . | cut -d: -f1) length=${#targets[@]} for ((i = 0; i != length; i++)); do echo "target $i: '${targets[i]}'" done 这只打印一个包含所有文件名的string的元素。 output: target 0: 'file0 file1 .. fileN' 但是我需要: output: target 0: 'file0' output: target 1: 'file1' ….. output: target […]

哪个程序创build一个C数组给定任何文件?

我记得在过去看到一个程序,将采取任何文件,并生成一个代表该文件作为输出的C数组; 在某些情况下会阻止分配一个单独的文件。 哪个Unix / Linux程序呢?

JsonArray.Parse(…)错误

我正在开发Windows 8的新闻应用程序(使用C#,XAML)。 不幸的是,我在asynchronous下载JSON-Feed(用http://jsonlint.com/validation)后遇到了一个奇怪的错误。 下载成功,然后我想parsing结果: var items = Windows.Data.JsonArray.Parse(result); 。 当我运行代码时,出现以下错误: Invalid character at position 0.和Invalid JSON string. Json.JsonArray是来自微软的新图书馆。 我也尝试了Newtonsoft的JSON库和相同的错误。 我究竟做错了什么? 这是完整的代码: // Retrieve recipe data from Azure var client = new HttpClient(); client.MaxResponseContentBufferSize = 1024*1024; // Read up to 1 MB of data var response = await client.GetAsync(new Uri("http://contosorecipes8.blob.core.windows.net/AzureRecipes")); var result = await response.Content.ReadAsStringAsync(); // […]

字符数组到LPCTSTR转换c

有谁知道如何将字符数组转换为c中的LPCTSTR? 编辑: 为了更多的参考,我需要给一个string添加一个整数,然后将该string转换为LPCTSTR作为窗口函数CreateFile()的第一个参数。 这是我目前正在使用的硬编码示例,但是我需要能够传入任何数字以用作端口号。 CreateFile(_T("\\\\.\\COM11")… //hardcoded for com port 11 这里有几个我已经尝试过的东西,我相信包括接下来的这个post的2个答案的以下build议。 他们不幸的工作。 如果有人可以指出我做错了什么,可以解决我的问题,我会很感激。 所有这些例子都假定portNum是一个已经被分配了一个有效值的int 1 char portName[12] = { 0 }; sprintf_s( portName, sizeof( portName ), "\\\\.\\COM%i", portNum ); CreateFile(portName… 我也尝试了LPCSTR案例#1,它值得… 2 LPCSTR SomeFunction(LPCSTR aString) { return aString; } main() { char portName[12] = { 0 }; sprintf_s( portName, sizeof( portName ), "\\\\.\\COM%i", portNum ); […]