[英]C++ Templated STL Container
我是C ++新手,我實際上是想弄清楚是否可以使用STL容器作為模板來存儲要傳遞給它的任何類型。 我不知道是否需要使用類模板或定義唯一的結構或什么。
本質上是我所擁有的,以及對我想要實現的目標的一些評論:
std::deque<template class T> messages; <--- ???
//the goal being not to store ANY type in this deque, but to somehow
//template it for each type that needs to be stored
//e.g. a different deque for an int, bool, ADT, etc.
template<class T> bool StoreMessage(T const &messageToStore){
messages<T>.push_back(messageToStore);
}
我什至不知道該如何處理甚至是不可能的方法,但是我真的不想為每種需要存儲的類型編寫函數,因為有很多方法 。 或使用void *。 出於安全考慮,我也不想這樣做,即使過程將完全相同,我仍然必須明確定義如何處理每種類型。
多謝你們!
容器已經被模板化了,所以您想要做的可能是這樣的:
template <typename T>
bool store_message(const T &message, std::deque<T> &container) {
container.push_back(message);
}
要調用它,請通過引用和元素同時傳遞一個容器:
std::deque<int> numbers;
int el = 5;
store_message(el, numbers);
實際上,您可以執行以下操作:
#include <deque>
template <class T>
struct container {
static std::deque<T> messages;
};
template <class T>
std::deque<T> container<T>::messages;
template<class T> bool StoreMessage(T const &messageToStore){
container<T>::messages.push_back(messageToStore);
}
int main() {
int a = 10;
StoreMessage(a);
}
因此,您想將變量包裝在其他模板化結構上,然后將其放入靜態變量中。 但是,您需要聲明靜態變量,以便編譯器將內存分配給該變量。 這是通過以下行完成的: template <class T> std::deque<T> container<T>::messages;
。 要正確執行此操作,請記住將模板化的所有內容都移動到頭文件中,包括內存分配/聲明內容...這樣,您將能夠訪問所有cpp / cc文件中的消息。 您需要做的就是在其中包含創建的頭文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.