C++的vector是一种同类型元素的容器,所以它并不直接支持存储不同类型的数据。但可以使用C++的any类型来实现这样的需求。
#include<iostream>
#include<vector>
#include<experimental/any> //引入第三方库any
using namespace std;
int main() {
vector<experimental::any> data;
data.push_back(19);
data.push_back(3.728f);
data.push_back('r');
data.push_back(8.42);
data.push_back("hello");
//使用experimental::any_cast函数来获取每个元素的实际类型,并进行相应的处理。
for (const auto& element : data) {
if (element.type() == typeid(int)) {
cout << experimental::any_cast<int>(element) << " ";
}
else if (element.type() == typeid(char)) {
cout << experimental::any_cast<char>(element) << " ";
}
else if (element.type() == typeid(double)) {
cout << experimental::any_cast<double>(element) << " ";
}
else if (element.type() == typeid(const char*)) {
cout << experimental::any_cast<const char*>(element) << " ";
}
}
cout << endl;
return 0;
}
请注意,std::experimental::any
是C++17的一个实验性特性,你需要确保你的编译器支持此特性,并包含正确的头文件,例如<experimental/any>
。