有关for(auto x: vector<int>v)的问题

for(auto i: container)遍历容器元素

C ++ 11 的新特性,后者是可以遍历的容器/流,i可以获得容器中的每一个元素。

主要方式有三种

1.auto: 拷贝元素但不会修改原容器/流;

2.auto&:拷贝并修改;

3.const auto&:只读取容器中元素,不会拷贝,也不修改;

4.const auto:拷贝且不可修改拷贝出来的值;

#include<iostream>
#include<vector>
using namespace std;
int main() {
    int n =5;
    vector<int>v(n);
    while(n--)
    v[n]=n;

    for (auto count : v)
        cout<< count<< " ";
    cout << endl;
    return 0;
}
//输出:5 4 3 2 1 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是用C++编程实现求CFG G的可空变量集U的代码: ```c++ #include <iostream> #include <vector> #include <set> using namespace std; vector<char> getNullableVariables(set<vector<char>> production_rules) { set<char> old_nullable_variables, new_nullable_variables; // 初始化OLDU为空集 old_nullable_variables.clear(); // 初始化NEWU为所有能推出空串的非终结符 for (auto rule : production_rules) { if (rule.size() == 1 && rule[0] == 'ε') { new_nullable_variables.insert(rule[0]); } } // 迭代求解,直到OLDU和NEWU相等 while (new_nullable_variables != old_nullable_variables) { old_nullable_variables = new_nullable_variables; for (auto rule : production_rules) { bool is_nullable = true; for (auto symbol : rule) { if (symbol >= 'A' && symbol <= 'Z' && old_nullable_variables.find(symbol) == old_nullable_variables.end()) { is_nullable = false; break; } } if (is_nullable) { new_nullable_variables.insert(rule[0]); } } } // 返回可空变量集合 vector<char> nullable_variables; for (auto variable : new_nullable_variables) { nullable_variables.push_back(variable); } return nullable_variables; } int main() { // 输入CFG G=(V,T,P,S) set<vector<char>> production_rules = { {'S', 'A', 'B'}, {'A', 'a', 'A'}, {'A', 'b'}, {'B', 'c', 'B'}, {'B', 'ε'} }; // 求解可空变量集合 vector<char> nullable_variables = getNullableVariables(production_rules); // 输出可空变量集合 cout << "Nullable variables: "; for (auto variable : nullable_variables) { cout << variable << " "; } cout << endl; return 0; } ``` 在上述代码中,我们使用了STL中的set和vector来存储产生式规则和可空变量集合。其中,set用于去重和快速查找,vector用于保存最终结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值