如何在方法中更改受方法影响的变量?/ c ++替代java put方法

时间:2015-12-27 02:04:29

标签: c++

我希望通过让方法在其代码中包含变量来更改变量的方法。与java中的put方法类似,我希望通过将索引设置为数字然后用另一个数字重写该索引处的数字来影响变量。

例如:

<?php session_start(); ?>

唯一的问题是put方法只更改变量#include <iostream> #include <string> using namespace std; string put(int pos, float f) { a = f[pos]; //pos - The index at which the float will be written //f - The float value to be written } int main () { int x = 6; int y = 2; int z = 3; float a[100]; a.put(10, y) } ,而我希望它更改指向它的任何变量。因此,如果存在a之类的变量并在代码中显示为b,那么它将重写索引23处的数字为3的任何内容。

2 个答案:

答案 0 :(得分:2)

似乎C ++中的指针可以实现您的尝试。

void put(float* a, int pos, float change){
    a[pos]=change;
}

当然,您需要小心访问超出数组大小的内存位置,但此put函数适用于任何数组。但是,这引出了一个问题,即你究竟想要做什么,因为直接更改值会更具可读性。我可以想象你从Java中引用的唯一“put”方法是HashMaps,而C ++的等价方法是unordered_map。有关详细信息,请参见here。它有一个insert函数,相当于Java put。

通过阅读上面的注释,使用指向变量而不是变量本身的指针将实现您似乎正在寻找的内容。

答案 1 :(得分:0)

定义类以创建此类函数。

#include <iostream>
#include <string>

class hoge {
private: // only for readability
  float a[100];
public:
  void put(int pos, float f)
  {
    if (pos >= 0 && pos < (int)(sizeof(a) / sizeof(a[0]))) a[pos] = f;
    //pos - The index at which the float will be written
    //f - The float value to be written 
  }
};

int main ()
{
  int x = 6;
  int y = 2;
  int z = 3;
  hoge a;
  a.put(10, y);
}