名稱空間
變體
操作

std::list<T,Allocator>::assign

來自 cppreference.com
< cpp‎ | 容器‎ | list
 
 
 
 
void assign( size_type count, const T& value );
(1)
template< class InputIt >
void assign( InputIt first, InputIt last );
(2)
void assign( std::initializer_list<T> ilist );
(3) (C++11 起)

替換容器的內容。

1) 將內容替換為 countvalue 的副本。
2) 將內容替換為範圍 [firstlast) 中的副本。
如果任一引數是 *this 的迭代器,則行為是未定義的。

如果 InputIt 是整型,則此過載與過載 (1) 具有相同的效果。

(C++11 前)

此過載僅在 InputIt 滿足 LegacyInputIterator 時才參與過載決議。

(C++11 起)
3) 將內容替換為 ilist 中的元素。

所有指向容器元素的迭代器、指標和引用都將失效。

目錄

[編輯] 引數

count - 容器的新大小
value - 用於初始化容器元素的數值
first, last - 定義要複製的元素的源 範圍 的迭代器對
ilist - std::initializer_list,從中複製值

[編輯] 複雜度

1) 關於 count 的線性複雜度。
2) 關於 firstlast 之間距離的線性複雜度。
3) 關於 ilist.size() 的線性複雜度。

[編輯] 示例

以下程式碼使用 assignstd::list<char> 新增多個字元

#include <list>
#include <iostream>
#include <string>
 
int main()
{
    std::list<char> characters;
 
    auto print_list = [&]()
    {
        for (char c : characters)
            std::cout << c << ' ';
        std::cout << '\n';
    };
 
    characters.assign(5, 'a');
    print_list();
 
    const std::string extra(6, 'b');
    characters.assign(extra.begin(), extra.end());
    print_list();
 
    characters.assign({'C', '+', '+', '1', '1'});
    print_list();
}

輸出

a a a a a
b b b b b b
C + + 1 1

缺陷報告

下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。

缺陷報告 應用於 釋出時的行為 正確的行為
LWG 320 C++98 替換操作要求實現為
擦除所有現有元素,然後插入給定元素
移除了冗餘要求
要求

[編輯] 參閱

將一個範圍的值賦給容器
(公共成員函式) [編輯]
將值賦給容器
(公共成員函式) [編輯]