C++ 创建向量方法
“list listObject;”行表示不允许使用字符,并且listObject处于未识别状态。有人能告诉我我做错了什么吗? 多谢各位C++ 创建向量方法,c++,C++,“list listObject;”行表示不允许使用字符,并且listObject处于未识别状态。有人能告诉我我做错了什么吗? 多谢各位 char list; vector<char> v(20); list<char> listObject; int i; for (i = 0; i < 20; i++) v[i] = 'A' + i; cout << "Original contents of vector:\n"; for (i = 0
char list;
vector<char> v(20);
list<char> listObject;
int i;
for (i = 0; i < 20; i++)
v[i] = 'A' + i;
cout << "Original contents of vector:\n";
for (i = 0; i < v.size(); i++)
cout << v[i] << " ";
cout << "\n\n";
char str[] = "-TEST MESSAGE-";
for (i = 0; str[i]; i++)
listObject.push_back(str[i]);
copy(listObject.begin(), listObject.end(), v.begin());
// display result
cout << "Contents of vector after copy:\n";
for (i = 0; i < v.size(); i++)
cout << v[i] << " ";
char列表;
向量v(20);
列表对象;
int i;
对于(i=0;i<20;i++)
v[i]=“A”+i;
cout第一点,正如owacodes所述,您试图定义一个名为list的局部变量,它与容器列表的名称冲突
第二点:我制作了一个可编译的示例,其中包含一些您可能会从中受益的更改
#include <iostream>
#include <string>
#include <algorithm>
#include <list>
int main()
{
std::vector<char> v(20);
// use iota for the assignment, it does what you want
std::iota(v.begin(), v.end(), 'A');
std::cout << "Original contents of vector:\n";
for(auto n: v) std::cout << n << ' ';
std::cout << std::endl;
// use a std::string instaed of char[], it is easier to use and less error prone
std::string str("-TEST MESSAGE-");
std::list<char> listObject;
listObject.insert(listObject.begin(),str.begin(),str.end());
std::copy(listObject.begin(), listObject.end(), v.begin());
// be careful, v is not resized (str will be truncated with a longer message)
std::cout << "new contents of vector:\n";
for(auto n: v) std::cout << n << ' ';
std::cout << std::endl;
}
您使用namelist
定义一个char
,然后尝试定义类型为list
的对象(除非您使用名称空间std取出;
您显然在某处),您正在创建的向量方法在哪里?
Original contents of vector:
A B C D E F G H I J K L M N O P Q R S T
new contents of vector:
- T E S T M E S S A G E - O P Q R S T