2016-12-03 35 views
1

我要定义变量,其名称依赖于其他变量的值,如与相关的名字

for (int i = 0; i < 5; i++) { 
    int v_i = 2 * i 
} 

std::cout << v_3; // output: 6 

int m; 
std::cin >> m; // m = 42 

int v_m = 10; 

std::cout << v_42; // output: 10 

当然定义变量,这些例子不工作,而是只需创建名称为v_iv_m的变量,将i和m视为字符。

我怎么能做到这一点?

+0

如何使用数组? – Winter

+0

没有冒犯,但它看起来像你试图重新发挥功能的轮子。 'v_3'如何比'int v(int x){return 2 * x; } v(3)'? – raina77ow

+0

@Winter拿我的第二个例子,用42,122,478代替42。没有比创建大型数组更好的方法吗? – Mophotla

回答

1

您可以使用关联映射。它可以让你将一个键与一个值相关联,然后从该键中访问一个值。

http://www.cplusplus.com/reference/map/map/

例子:

int main() 
{ 
    std::map<char,int> test; 

    test['a']=10; 
    test['b']=30; 
    test['c']=50; 
    test['d']=70; 

    std::cout << test['a'] << std::endl; //prints 10 
} 

对你来说,这将是一个map<int, int>

地图也被称为Dictionnary在一些其他语言。