带有变量字符串的set容器声明

时间:2014-03-11 19:34:15

标签: c++ set

我有这个问题。是否可以宣布更多集合&#34;组&#34;只有一个set<string>name,其中&#34; name&#34;将是字符串,它将随着周期的每次旋转而改变?我的意思是这样的:

#include <cstdlib>
#include <iostream>
#include<string>
#include <set>

using namespace std;

int main(int argc, char** argv) {

    set<string> setname;
    string example = "This is an example of string";
    string s;
    istringstream f(example);
    while (getline(f, s, ' ')){
        set<string>s;
        }
    return 0;
    }

问题是,即使在周期再循环一次之后,集合是否仍会被声明,即使在{&#34; s&#34;之后也会声明set<string>This。将是字符串&#34;是&#34;。提前谢谢。

2 个答案:

答案 0 :(得分:0)

  

问题是即使在循环再次旋转

之后,这些集合是否仍会被声明
  1. 您实际上是在while循环中隐藏了string s;set<string>s;的声明。他们是无关的!
  2. 是的,set<string>s;将为while循环的每个周期创建一个新的集合实例。

答案 1 :(得分:0)

在这个循环中

while (getline(f, s, ' ')){
    set<string>s;
    }

类型std::set<std::string>的对象将在循环的每次迭代中重新创建,因为它是循环的复合语句的局部变量。