我有一个别人写的perl程序.当我运行它时,它默默地退出而不向日志文件写入任何内容.有没有办法我可以逐步运行这个Perl程序,由解释器逐行运行,从而看到它终止的位置?
给定一个块大小N和一个长度整数向量k * N(可以将其视为k整数块)N,我想创建一个新的长度向量,k其元素是原始向量块的总和。
例如,块大小为 2,向量{1,2,3,4,5,6}将给出结果{3,7,11}。
例如,块大小为 3,向量{0,0,0,1,1,1}将给出结果{0,3}。
一个简单有效的方法:
std::vector<int> sum_blocks(int block_size, const std::vector<int>& input){
std::vector<int> ret(input.size() / block_size, 0);
for (unsigned int i = 0; i < ret.size(); ++i)
{
for(unsigned int j=0; j < block_size; ++j)
ret[i] += input[block_size * i + j];
}
return ret;
}
Run Code Online (Sandbox Code Playgroud)
不过,我有兴趣知道是否有更简洁或更有效的方法来执行此操作,可能使用该algorithm库。
我坐在C ++ Primer(3.23)上的一个小练习上将近2天。我尝试了多种方法来为分配值vector<int>。到目前为止,我将为您提供一个实际的练习和代码,但这完全是错误的。我做了很多研究,但没有发现任何用处。
编写一个程序来创建一个vector包含10个int元素的。使用迭代器,为每个元素分配一个为其当前值两倍的值。通过打印测试程序vector
这是我的代码
int main(){
vector<int> num(10);
for (auto it=num.begin();it != num.end() ;++it)//iterating through each element in vector
{
*it=2;//assign value to vector using iterator
for (auto n=num.begin() ;n!=num.end();++n)//Iterating through existing elements in vector
{
*it+=*n;// Compound of elements from the first loop and 2 loop iteration
}
cout<<*it<<" ";
}
keep_window_open("~");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是我不知道如何使用迭代器int为每个vector元素分配值(我为1分配了五个元素,但没有给五个元素分配值)!此外,我在如何使用中的10个元素来完成此练习时大吃一惊vector,因为每个元素必须具有不同的值,并且迭代器必须执行赋值。
感谢您的时间。
考虑下面的代码
std::set<int> int_set = {1, 2, 3, 4};
for(const auto& key : int_set)
{
if(key == 2)
{
int_set.erase(key);
break;
}
}
Run Code Online (Sandbox Code Playgroud)
代码按预期运行,但是安全吗?
使用对键的引用来从集合中删除自身感觉是错误的,因为大概一旦发生删除,引用就不再有效。
具有相同潜在问题的另一个代码片段是
std::set<int> int_set = {1, 2, 3, 4};
const auto& key = *int_set.find(2);
int_set.erase(k);
Run Code Online (Sandbox Code Playgroud) 对于我的一个开源项目,我需要计算给定unicode字符的十进制等效值.
例如,如果L'?'给出泰米尔语字符,则输出应为2949.
我在Qt环境中使用c ++.我用谷歌搜索,无法找到解决方案.如果您知道解决方案,请提供帮助.
我正在使用cin >> x[0] >> x[1] >> x[2] >> x[3];等获取输入,例如:
1 2 3 4.
但我的问题是,可能有3个不同的数字(例如,1,2和3)到20个不同的数字,我不知道预先有多少.因为用户最多可以输入20个数字,所以我重复了上面的模式,直到x [19].我发现程序不会继续,直到它为这些值中的每一个都有一个输入.
我想在不同的内存位置输入两个字符串,但在第一次输入后,它显示错误"分段错误(核心转储").我没有弄清楚这段代码有什么问题.
#include <stdio.h>
#include<iostream>
using namespace std;
int main()
{
char *str;
int i;
scanf("%s",str+0);
scanf("%s",str+1);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我只接受一个输入时它工作正常.
#include <stdio.h>
#include<iostream>
using namespace std;
int main()
{
char *str;
int i;
scanf("%s",str+0);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么?