C++ 按值传递字符数组

C++ 按值传递字符数组,c++,c++11,C++,C++11,我无法按值将字符数组传递给优先级\u队列。我想向构造函数传递一个唯一的值,但我只能将优先级队列中的类型分配给char*。这会导致一个问题,因为传递的值在算法的每次迭代中都会发生变化,然后优先级队列中的所有值都会发生变化(因为每个元素都是指向任务的指针)。下面是一个代码示例: char task[100]; char priority; pair<int, char*> temp; priority_queue< int, vector<pair<int, c

我无法按值将字符数组传递给
优先级\u队列
。我想向构造函数传递一个唯一的值,但我只能将优先级队列中的类型分配给
char*
。这会导致一个问题,因为传递的值在算法的每次迭代中都会发生变化,然后优先级队列中的所有值都会发生变化(因为每个元素都是指向任务的指针)。下面是一个代码示例:

 char task[100];
 char priority;
 pair<int, char*> temp;
 priority_queue< int, vector<pair<int, char*>>, compare> queue;
 printf("Define a priority and a task to be done (exit by pressing CTRL-D):\n\n");
 do {
    priority=getchar();
    if(isdigit(priority)){
      scanf("%s", task);
      temp=make_pair(atoi(&priority), task); //I want to pass by value here not by reference, is there any solution to this?
      queue.push(temp);
      printf("%i %s\n", temp.first, temp.second);
    }
 } while(priority != EOF);
char任务[100];
字符优先级;
对温;
优先级队列队列;
printf(“定义优先级和要完成的任务(按CTRL-D退出):\n\n”);
做{
优先级=getchar();
if(isdigit(优先级)){
scanf(“%s”,任务);
temp=make_pair(atoi(&priority),task);//我想在这里按值传递,而不是按引用传递,有什么解决方案吗?
队列推送(temp);
printf(“%i%s\n”,温度第一,温度第二);
}
}while(优先级!=EOF);

有什么方法可以为优先级队列的每个元素分配一个唯一的字符串吗?

正如对问题的评论所建议的那样,您可以将
char[100]
int
包装为新类型(因为
pair
的抽象性较差)。 另一个选项是使用
std::string
std::vector
std::array
而不是char[100]


PS:对
atoi(&priority)
的调用可能会失败,因为
atoi
需要以null结尾的C字符串,而不是指向单个字符的指针。

我想您可以使用类似
std::array
的东西,但您当前的向量类型需要动态分配的字符串


<>你想强制向量的每一个元素都超过100个字节,不管字符串长多长?

C++解决方案:通过值传递<代码>字符串或<代码> vector < /代码>。C解决方案:
structfoo{chartask[100];}并按值传递该结构。只需使用
生成_对(…,std::string(task))
并相应地更改相关类型。确定。我明白了,这是解决问题的办法。在这种情况下,仅使用char[]根本不是一个选项?