小编abh*_*aik的帖子

调用函数只知道C中运行时的参数类型?

假设我有一个功能:

int foo (int A, char B){...}
Run Code Online (Sandbox Code Playgroud)

我想要实现的功能之一是用户能够通过Linux终端调用应用程序上的任何功能.因此,作为软件的输入,在终端中输入如下内容:

foo 2 'a'

然后我的应用程序解析它,并使用符号表,它能够找到其foo()所有参数的地址和类型.

但是,我不确定在调用它时如何将参数传递给函数,因为根据调用的函数,我可以有数百种不同的参数类型组合.

在调用函数之前,如果没有数百个嵌套的if语句将参数转换为正确的类型,有何提示如何实现?

该功能类似于GDB所具有的功能,您可以在其中执行call foo(2,'a')GDB调用.

c

6
推荐指数
1
解决办法
90
查看次数

两个指针问题是否与滑动窗口相同

我想知道“滑动窗口”和“双指针”问题之间的显着区别。

这让我很难区分这两者。

arrays algorithm

6
推荐指数
1
解决办法
1799
查看次数

初始化我的std :: map

我写了下面的代码,使用了一个Map.该程序查找string密钥出现的次数Map.如果只出现一次,则价值intstring重点应该是1,依此类推.这个程序运行并产生所需的输出 - 但我觉得这是纯粹的运气,因为我没有在任何地方初始化Map.我只是在做myMap[str]++- 这绝不保证最初的价值0.那么,如何初始化地图以便任何string键的值0在遇到之前我做了myMap[str]++

#include<cstdio>
#include<string>
#include<iostream>
#include<map>

int main()
{
    int t;
    long int n;
    std::string str;
    std::map< std::string, int > myMap;
    scanf("%d", &t);

    while(t--)
    {
        scanf("%ld", &n);
        std::cin.ignore();
        while(n--)
        {
            getline(std::cin, str);
            myMap[str]++;
        }

        for(std::map< std::string, int >::iterator it=myMap.begin(); it!=myMap.end(); it++)
            printf("%s %d\n", it->first.c_str(), it->second);
        printf("\n");

        myMap.erase(myMap.begin(), myMap.end());
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

样本输入:

2
6 …

c++ stl initialization

5
推荐指数
1
解决办法
593
查看次数

最大子阵列问题 - 最小值解决方案?

你有没有觉得你的脑袋不适合算法?

我尝试解决最大子数组问题,并且在 Codewars 上遇到了这个解决方案:

var maxSequence = function(arr){
  var min = 0, ans = 0, i, sum = 0;
  for (i = 0; i < arr.length; ++i) {
    sum += arr[i];
    min = Math.min(sum, min);
    ans = Math.max(ans, sum - min);
  }
  return ans;
}

console.log(maxSequence([-2, 1, -3, 4, -1, 2, 1, -5, -4]));
Run Code Online (Sandbox Code Playgroud)

我了解如何使用线性时间复杂度解决这个问题Kadane's algorithm

var maxSequence = function(arr){
  let max = 0;
  let localMax = 0;

  for (let i = 0; i …
Run Code Online (Sandbox Code Playgroud)

javascript algorithm kadanes-algorithm

4
推荐指数
1
解决办法
155
查看次数

将数据放入头文件中是否可以"正常"?

比方说,我创建的C.一个简单的库调用地块比方说,我有一对夫妇的功能,例如PlotFunction(),SetTitle(),SetScale()等我们也可以说我想提供一些基本的情节,如Triangle,Rectangle等这是资源文件.我认为这些资源将被保存为数组(e.g. triangle[] = {0, 1, 2, 3, 2, 1, 0})

这是一个可以将数据包含在头文件中的示例吗?通常我认为头文件是为函数原型保留的,但这似乎是一个在头中包含变量/结构的实例.

这被认为是不好的做法吗?有更好的替代方案吗?

c header

3
推荐指数
1
解决办法
99
查看次数

使用push_back将向量<double>放入向量<vector <double >>

我有一个std::vector<vector<double>>我想填写一个功能.我需要在我的程序中稍后为某些计算存储一些3维坐标.

我的问题是如果我这样做:

//in classdefinition
std::vector<std::vector<double>> data;

    myFunc()
    {
        std::vector<double> temp;
        temp.push_back(1);
        temp.push_back(2);
        temp.push_back(3);
        data.push_back(temp);

        temp.clear();
        //new data
        temp.push_back(2);
        temp.push_back(3);
        temp.push_back(4);
        data.push_back(temp);
    }
Run Code Online (Sandbox Code Playgroud)

清除和重新填充temp会影响数据中的值吗?

我已经找到了这个http://www.cplusplus.com/reference/vector/vector/push_back/, 但由于解释是"将val的内容复制(或移动)到新元素." 我不知道该怎么想.对我来说,这听起来像是一个矛盾.

我认为如果变量作为参考传递是没有多大意义的,因为它们可以像我的情况一样只在有限的范围内有效.我的假设是对的吗?

c++ stdvector

3
推荐指数
1
解决办法
540
查看次数

如何比较两个函数之间的效率?

其中一个是n*sqrt(n)另一个是n*log(n)*log(n).有没有办法计算哪一个更有效?

c big-o time-complexity

3
推荐指数
1
解决办法
194
查看次数

一个奇怪的字符出现在我的char数组的第一个

我正在制作摩尔斯电码转换器,它完成了,我解决了问题,但我不明白. 图片代表了问题

这是一些代码:

string txt,result;
int x;
cout << "Enter the text you want to convert\n";
getline  (cin,txt);
x = txt.size();
char text[x];
strcat(text,txt.c_str());

cout<<"txt = "<<txt<<"\n"<<"text = "<<text<<endl;
Run Code Online (Sandbox Code Playgroud)

我只想知道它是什么char,以及为什么会出现.

c++ arrays string

2
推荐指数
1
解决办法
59
查看次数